From 65104565532c1cd1d239cc7b9237aff838ac7274 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Fri, 19 Dec 2025 15:00:42 +0100 Subject: [PATCH] Sync Sphinx and Weblate templates with current docs (4.6) --- docs | 2 +- sphinx/templates/404.pot | 2 +- .../about/complying_with_licenses.pot | 2 +- sphinx/templates/about/docs_changelog.pot | 963 +- sphinx/templates/about/faq.pot | 184 +- sphinx/templates/about/introduction.pot | 2 +- sphinx/templates/about/list_of_features.pot | 2 +- sphinx/templates/about/release_policy.pot | 226 +- .../templates/about/system_requirements.pot | 4 +- .../community/asset_library/index.pot | 2 +- .../asset_library/submitting_to_assetlib.pot | 2 +- .../asset_library/using_assetlib.pot | 2 +- .../asset_library/what_is_assetlib.pot | 2 +- sphinx/templates/community/channels.pot | 2 +- sphinx/templates/community/tutorials.pot | 4 +- .../architecture/2d_coordinate_systems.pot | 2 +- .../binding_to_external_libraries.pot | 2 +- .../common_engine_methods_and_macros.pot | 2 +- .../architecture/core_types.pot | 369 +- .../architecture/custom_audiostreams.pot | 2 +- .../architecture/custom_godot_servers.pot | 2 +- .../architecture/custom_modules_in_cpp.pot | 2 +- .../architecture/custom_platform_ports.pot | 2 +- .../custom_resource_format_loaders.pot | 2 +- .../godot_architecture_diagram.pot | 2 +- .../engine_details/architecture/index.pot | 10 +- .../architecture/inheritance_class_tree.pot | 2 +- .../internal_rendering_architecture.pot | 2 +- .../architecture/object_class.pot | 236 +- .../architecture/scripting_development.pot | 2 +- .../architecture/unit_testing.pot | 2 +- .../architecture/variant_class.pot | 4 +- .../engine_details/class_reference/index.pot | 2 +- .../compiling/compiling_for_android.pot | 169 +- .../compiling/compiling_for_ios.pot | 2 +- .../compiling/compiling_for_linuxbsd.pot | 168 +- .../compiling/compiling_for_macos.pot | 130 +- .../compiling/compiling_for_visionos.pot | 2 +- .../compiling/compiling_for_web.pot | 4 +- .../compiling/compiling_for_windows.pot | 333 +- .../compiling/compiling_with_dotnet.pot | 2 +- .../compiling_with_script_encryption_key.pot | 2 +- .../cross-compiling_for_ios_on_linux.pot | 2 +- .../development/compiling/getting_source.pot | 2 +- .../development/compiling/index.pot | 2 +- .../introduction_to_the_buildsystem.pot | 4 +- .../compiling/optimizing_for_size.pot | 4 +- .../configuring_an_ide/android_studio.pot | 4 +- .../development/configuring_an_ide/clion.pot | 2 +- .../configuring_an_ide/code_blocks.pot | 2 +- .../development/configuring_an_ide/index.pot | 2 +- .../configuring_an_ide/kdevelop.pot | 2 +- .../configuring_an_ide/qt_creator.pot | 2 +- .../development/configuring_an_ide/rider.pot | 2 +- .../configuring_an_ide/visual_studio.pot | 2 +- .../configuring_an_ide/visual_studio_code.pot | 2 +- .../development/configuring_an_ide/xcode.pot | 2 +- .../development/debugging/index.pot | 2 +- .../development/debugging/macos_debug.pot | 2 +- .../profiling/sampling_profilers.pot | 204 + .../debugging/profiling/tracing_profilers.pot | 226 + .../debugging/using_cpp_profilers.pot | 186 +- .../debugging/using_sanitizers.pot | 2 +- .../development/debugging/vulkan/index.pot | 2 +- .../vulkan/vulkan_validation_layers.pot | 26 +- .../handling_compatibility_breakages.pot | 46 +- .../engine_details/development/index.pot | 2 +- .../engine_details/editor/creating_icons.pot | 2 +- .../templates/engine_details/editor/index.pot | 2 +- .../introduction_to_editor_development.pot | 10 +- .../file_formats/gdscript_grammar.pot | 2 +- .../engine_details/file_formats/index.pot | 2 +- .../engine_details/file_formats/tscn.pot | 2 +- .../first_2d_game/01.project_setup.pot | 2 +- .../first_2d_game/02.player_scene.pot | 2 +- .../first_2d_game/03.coding_the_player.pot | 2 +- .../first_2d_game/04.creating_the_enemy.pot | 2 +- .../first_2d_game/05.the_main_game_scene.pot | 2 +- .../first_2d_game/06.heads_up_display.pot | 2 +- .../first_2d_game/07.finishing-up.pot | 2 +- .../getting_started/first_2d_game/index.pot | 24 +- .../first_3d_game/01.game_setup.pot | 2 +- .../first_3d_game/02.player_input.pot | 2 +- .../first_3d_game/03.player_movement_code.pot | 4 +- .../first_3d_game/04.mob_scene.pot | 2 +- .../first_3d_game/05.spawning_mobs.pot | 4 +- .../first_3d_game/06.jump_and_squash.pot | 2 +- .../first_3d_game/07.killing_player.pot | 2 +- .../first_3d_game/08.score_and_replay.pot | 2 +- .../first_3d_game/09.adding_animations.pot | 2 +- .../first_3d_game/going_further.pot | 2 +- .../getting_started/first_3d_game/index.pot | 22 +- .../introduction/first_look_at_the_editor.pot | 2 +- .../introduction/godot_design_philosophy.pot | 2 +- .../getting_started/introduction/index.pot | 2 +- .../introduction/introduction_to_godot.pot | 12 +- .../introduction/key_concepts_overview.pot | 2 +- .../learn_to_code_with_gdscript.pot | 2 +- .../introduction/learning_new_features.pot | 38 +- .../getting_started/step_by_step/index.pot | 2 +- .../step_by_step/instancing.pot | 2 +- .../step_by_step/nodes_and_scenes.pot | 2 +- .../step_by_step/scripting_first_script.pot | 2 +- .../step_by_step/scripting_languages.pot | 2 +- .../step_by_step/scripting_player_input.pot | 2 +- .../getting_started/step_by_step/signals.pot | 2 +- sphinx/templates/index.pot | 4 +- sphinx/templates/sphinx.pot | 2 +- .../tutorials/2d/2d_antialiasing.pot | 2 +- .../tutorials/2d/2d_lights_and_shadows.pot | 222 +- sphinx/templates/tutorials/2d/2d_meshes.pot | 2 +- sphinx/templates/tutorials/2d/2d_movement.pot | 2 +- sphinx/templates/tutorials/2d/2d_parallax.pot | 2 +- .../tutorials/2d/2d_sprite_animation.pot | 2 +- .../templates/tutorials/2d/2d_transforms.pot | 2 +- .../templates/tutorials/2d/canvas_layers.pot | 2 +- .../tutorials/2d/custom_drawing_in_2d.pot | 2 +- sphinx/templates/tutorials/2d/index.pot | 2 +- .../tutorials/2d/introduction_to_2d.pot | 2 +- .../2d/particle_process_material_2d.pot | 2 +- .../tutorials/2d/particle_systems_2d.pot | 2 +- .../templates/tutorials/2d/using_tilemaps.pot | 2 +- .../templates/tutorials/2d/using_tilesets.pot | 4 +- .../tutorials/3d/3d_antialiasing.pot | 2 +- .../tutorials/3d/3d_rendering_limitations.pot | 2 +- sphinx/templates/tutorials/3d/3d_text.pot | 2 +- sphinx/templates/tutorials/3d/csg_tools.pot | 2 +- .../3d/environment_and_post_processing.pot | 215 +- .../faking_global_illumination.pot | 2 +- .../3d/global_illumination/index.pot | 2 +- .../introduction_to_global_illumination.pot | 2 +- .../global_illumination/reflection_probes.pot | 2 +- .../global_illumination/using_lightmap_gi.pot | 6 +- .../3d/global_illumination/using_sdfgi.pot | 4 +- .../3d/global_illumination/using_voxel_gi.pot | 68 +- .../tutorials/3d/high_dynamic_range.pot | 2 +- sphinx/templates/tutorials/3d/index.pot | 2 +- .../tutorials/3d/introduction_to_3d.pot | 2 +- .../tutorials/3d/lights_and_shadows.pot | 2 +- sphinx/templates/tutorials/3d/mesh_lod.pot | 2 +- .../tutorials/3d/occlusion_culling.pot | 2 +- .../tutorials/3d/particles/attractors.pot | 62 +- .../tutorials/3d/particles/collision.pot | 94 +- .../tutorials/3d/particles/complex_shapes.pot | 2 +- .../creating_a_3d_particle_system.pot | 2 +- .../tutorials/3d/particles/index.pot | 2 +- .../particles/process_material_properties.pot | 2 +- .../tutorials/3d/particles/properties.pot | 2 +- .../tutorials/3d/particles/subemitters.pot | 2 +- .../tutorials/3d/particles/trails.pot | 2 +- .../tutorials/3d/particles/turbulence.pot | 2 +- .../3d/physical_light_and_camera_units.pot | 2 +- .../3d/procedural_geometry/arraymesh.pot | 110 +- .../3d/procedural_geometry/immediatemesh.pot | 2 +- .../3d/procedural_geometry/index.pot | 2 +- .../3d/procedural_geometry/meshdatatool.pot | 2 +- .../3d/procedural_geometry/surfacetool.pot | 10 +- .../tutorials/3d/resolution_scaling.pot | 2 +- sphinx/templates/tutorials/3d/spring_arm.pot | 2 +- .../tutorials/3d/standard_material_3d.pot | 442 +- .../templates/tutorials/3d/using_decals.pot | 2 +- .../templates/tutorials/3d/using_gridmaps.pot | 2 +- .../3d/using_multi_mesh_instance.pot | 2 +- .../tutorials/3d/using_transforms.pot | 38 +- .../tutorials/3d/variable_rate_shading.pot | 2 +- .../tutorials/3d/visibility_ranges.pot | 6 +- .../templates/tutorials/3d/volumetric_fog.pot | 4 +- .../tutorials/animation/2d_skeletons.pot | 2 +- .../animation/animation_track_types.pot | 2 +- .../tutorials/animation/animation_tree.pot | 200 +- .../tutorials/animation/creating_movies.pot | 2 +- .../tutorials/animation/cutout_animation.pot | 2 +- .../templates/tutorials/animation/index.pot | 2 +- .../tutorials/animation/introduction.pot | 2 +- .../tutorials/animation/playing_videos.pot | 4 +- .../assets_pipeline/escn_exporter/index.pot | 2 +- .../assets_pipeline/exporting_3d_scenes.pot | 2 +- .../assets_pipeline/import_process.pot | 2 +- .../advanced_import_settings.pot | 4 +- .../importing_3d_scenes/available_formats.pot | 2 +- .../import_configuration.pot | 6 +- .../importing_3d_scenes/index.pot | 2 +- .../model_export_considerations.pot | 2 +- .../node_type_customization.pot | 2 +- .../importing_audio_samples.pot | 2 +- .../assets_pipeline/importing_images.pot | 338 +- .../importing_translations.pot | 2 +- .../tutorials/assets_pipeline/index.pot | 2 +- .../retargeting_3d_skeletons.pot | 100 +- .../templates/tutorials/audio/audio_buses.pot | 2 +- .../tutorials/audio/audio_effects.pot | 2 +- .../tutorials/audio/audio_streams.pot | 2 +- sphinx/templates/tutorials/audio/index.pot | 2 +- .../audio/recording_with_microphone.pot | 22 +- .../tutorials/audio/sync_with_audio.pot | 2 +- .../tutorials/audio/text_to_speech.pot | 2 +- .../autoloads_versus_internal_nodes.pot | 2 +- .../best_practices/data_preferences.pot | 2 +- .../best_practices/godot_interfaces.pot | 2 +- .../best_practices/godot_notifications.pot | 2 +- .../tutorials/best_practices/index.pot | 2 +- .../introduction_best_practices.pot | 2 +- .../best_practices/logic_preferences.pot | 50 +- .../best_practices/node_alternatives.pot | 2 +- .../best_practices/project_organization.pot | 2 +- .../best_practices/scene_organization.pot | 2 +- .../best_practices/scenes_versus_scripts.pot | 2 +- .../version_control_systems.pot | 6 +- .../best_practices/what_are_godot_classes.pot | 2 +- .../editor/command_line_tutorial.pot | 4 +- .../tutorials/editor/customizing_editor.pot | 2 +- .../tutorials/editor/default_key_mapping.pot | 13 +- .../tutorials/editor/external_editor.pot | 6 +- sphinx/templates/tutorials/editor/index.pot | 2 +- .../tutorials/editor/inspector_dock.pot | 2 +- .../editor/managing_editor_features.pot | 2 +- .../tutorials/editor/project_manager.pot | 2 +- .../tutorials/editor/project_settings.pot | 2 +- .../tutorials/editor/script_editor.pot | 2 +- ...ngine_compilation_configuration_editor.pot | 2 +- .../editor/using_the_android_editor.pot | 4 +- .../tutorials/editor/using_the_web_editor.pot | 2 +- .../tutorials/editor/using_the_xr_editor.pot | 2 +- .../tutorials/export/android_gradle_build.pot | 2 +- .../changing_application_icon_for_windows.pot | 2 +- .../export/exporting_for_android.pot | 4 +- .../exporting_for_dedicated_servers.pot | 2 +- .../tutorials/export/exporting_for_ios.pot | 2 +- .../tutorials/export/exporting_for_linux.pot | 2 +- .../tutorials/export/exporting_for_macos.pot | 2 +- .../export/exporting_for_visionos.pot | 2 +- .../tutorials/export/exporting_for_web.pot | 4 +- .../export/exporting_for_windows.pot | 2 +- .../tutorials/export/exporting_pcks.pot | 2 +- .../tutorials/export/exporting_projects.pot | 2 +- .../tutorials/export/feature_tags.pot | 2 +- sphinx/templates/tutorials/export/index.pot | 2 +- .../tutorials/export/one-click_deploy.pot | 2 +- .../tutorials/export/running_on_macos.pot | 2 +- sphinx/templates/tutorials/i18n/index.pot | 2 +- .../i18n/internationalizing_games.pot | 302 +- sphinx/templates/tutorials/i18n/locales.pot | 2 +- .../i18n/localization_using_gettext.pot | 164 +- .../i18n/localization_using_spreadsheets.pot | 56 +- .../tutorials/i18n/pseudolocalization.pot | 4 +- .../inputs/controllers_gamepads_joysticks.pot | 48 +- .../tutorials/inputs/custom_mouse_cursor.pot | 2 +- .../inputs/handling_quit_requests.pot | 2 +- sphinx/templates/tutorials/inputs/index.pot | 2 +- .../tutorials/inputs/input_examples.pot | 2 +- .../templates/tutorials/inputs/inputevent.pot | 2 +- .../inputs/mouse_and_input_coordinates.pot | 2 +- .../tutorials/io/background_loading.pot | 2 +- .../tutorials/io/binary_serialization_api.pot | 2 +- sphinx/templates/tutorials/io/data_paths.pot | 76 +- sphinx/templates/tutorials/io/index.pot | 2 +- .../io/runtime_file_loading_and_saving.pot | 30 +- .../templates/tutorials/io/saving_games.pot | 2 +- .../tutorials/math/beziers_and_curves.pot | 2 +- sphinx/templates/tutorials/math/index.pot | 2 +- .../tutorials/math/interpolation.pot | 2 +- .../math/matrices_and_transforms.pot | 2 +- .../math/random_number_generation.pot | 2 +- .../templates/tutorials/math/vector_math.pot | 2 +- .../tutorials/math/vectors_advanced.pot | 2 +- .../templates/tutorials/migrating/index.pot | 2 +- .../migrating/upgrading_to_godot_4.1.pot | 2 +- .../migrating/upgrading_to_godot_4.2.pot | 2 +- .../migrating/upgrading_to_godot_4.3.pot | 2 +- .../migrating/upgrading_to_godot_4.4.pot | 2 +- .../migrating/upgrading_to_godot_4.5.pot | 4 +- .../migrating/upgrading_to_godot_4.pot | 2 +- .../templates/tutorials/navigation/index.pot | 2 +- .../navigation_connecting_navmesh.pot | 2 +- .../navigation/navigation_debug_tools.pot | 2 +- ...navigation_different_actor_area_access.pot | 2 +- .../navigation_different_actor_locomotion.pot | 2 +- .../navigation_different_actor_types.pot | 2 +- .../navigation/navigation_introduction_2d.pot | 2 +- .../navigation/navigation_introduction_3d.pot | 2 +- .../navigation_optimizing_performance.pot | 2 +- .../navigation_using_navigationagents.pot | 2 +- .../navigation_using_navigationlayers.pot | 2 +- .../navigation_using_navigationlinks.pot | 2 +- .../navigation_using_navigationmaps.pot | 2 +- .../navigation_using_navigationmeshes.pot | 2 +- .../navigation_using_navigationobstacles.pot | 2 +- ...ation_using_navigationpathqueryobjects.pot | 2 +- .../navigation_using_navigationpaths.pot | 2 +- .../navigation_using_navigationregions.pot | 2 +- .../navigation_using_navigationservers.pot | 2 +- .../networking/high_level_multiplayer.pot | 4 +- .../networking/http_client_class.pot | 2 +- .../networking/http_request_class.pot | 2 +- .../templates/tutorials/networking/index.pot | 2 +- .../tutorials/networking/ssl_certificates.pot | 2 +- .../templates/tutorials/networking/webrtc.pot | 2 +- .../tutorials/networking/websocket.pot | 2 +- .../performance/cpu_optimization.pot | 2 +- .../performance/general_optimization.pot | 2 +- .../performance/gpu_optimization.pot | 2 +- .../templates/tutorials/performance/index.pot | 2 +- .../performance/optimizing_3d_performance.pot | 4 +- .../performance/pipeline_compilations.pot | 2 +- .../performance/thread_safe_apis.pot | 78 +- .../tutorials/performance/using_multimesh.pot | 2 +- .../performance/using_multiple_threads.pot | 44 +- .../tutorials/performance/using_servers.pot | 26 +- .../animating_thousands_of_fish.pot | 2 +- .../controlling_thousands_of_fish.pot | 2 +- .../performance/vertex_animation/index.pot | 2 +- .../tutorials/physics/collision_shapes_2d.pot | 2 +- .../tutorials/physics/collision_shapes_3d.pot | 2 +- sphinx/templates/tutorials/physics/index.pot | 2 +- .../2d_and_3d_physics_interpolation.pot | 2 +- .../advanced_physics_interpolation.pot | 2 +- .../tutorials/physics/interpolation/index.pot | 2 +- .../physics_interpolation_introduction.pot | 2 +- ...hysics_interpolation_quick_start_guide.pot | 2 +- .../using_physics_interpolation.pot | 2 +- .../physics/kinematic_character_2d.pot | 2 +- .../physics/large_world_coordinates.pot | 2 +- .../physics/physics_introduction.pot | 2 +- .../tutorials/physics/ragdoll_system.pot | 272 +- .../tutorials/physics/ray-casting.pot | 2 +- .../tutorials/physics/rigid_body.pot | 2 +- .../templates/tutorials/physics/soft_body.pot | 212 +- .../troubleshooting_physics_issues.pot | 2 +- .../tutorials/physics/using_area_2d.pot | 2 +- .../physics/using_character_body_2d.pot | 2 +- .../tutorials/physics/using_jolt_physics.pot | 168 +- .../android/android_in_app_purchases.pot | 2 +- .../platform/android/android_library.pot | 2 +- .../platform/android/android_plugin.pot | 2 +- .../tutorials/platform/android/index.pot | 2 +- ...aclasswrapper_and_androidruntimeplugin.pot | 6 +- .../android/resolving_crashes_on_android.pot | 149 + .../templates/tutorials/platform/consoles.pot | 2 +- sphinx/templates/tutorials/platform/index.pot | 2 +- .../tutorials/platform/ios/index.pot | 2 +- .../tutorials/platform/ios/ios_plugin.pot | 2 +- .../platform/ios/plugins_for_ios.pot | 2 +- .../platform/web/customizing_html5_shell.pot | 4 +- .../platform/web/html5_shell_classref.pot | 2 +- .../tutorials/platform/web/index.pot | 2 +- .../platform/web/javascript_bridge.pot | 2 +- .../tutorials/plugins/editor/3d_gizmos.pot | 26 +- .../plugins/editor/import_plugins.pot | 2 +- .../tutorials/plugins/editor/index.pot | 2 +- .../plugins/editor/inspector_plugins.pot | 2 +- .../plugins/editor/installing_plugins.pot | 2 +- .../editor/making_main_screen_plugins.pot | 2 +- .../plugins/editor/making_plugins.pot | 102 +- .../plugins/editor/visual_shader_plugins.pot | 2 +- sphinx/templates/tutorials/plugins/index.pot | 2 +- .../plugins/running_code_in_the_editor.pot | 2 +- .../tutorials/rendering/compositor.pot | 2 +- .../templates/tutorials/rendering/index.pot | 2 +- .../tutorials/rendering/jitter_stutter.pot | 2 +- .../rendering/multiple_resolutions.pot | 2 +- .../tutorials/rendering/renderers.pot | 2 +- .../tutorials/rendering/viewports.pot | 2 +- .../scripting/c_sharp/c_sharp_basics.pot | 168 +- .../scripting/c_sharp/c_sharp_collections.pot | 2 +- .../scripting/c_sharp/c_sharp_differences.pot | 2 +- .../scripting/c_sharp/c_sharp_exports.pot | 4 +- .../scripting/c_sharp/c_sharp_features.pot | 2 +- .../c_sharp/c_sharp_global_classes.pot | 2 +- .../scripting/c_sharp/c_sharp_signals.pot | 2 +- .../scripting/c_sharp/c_sharp_style_guide.pot | 2 +- .../scripting/c_sharp/c_sharp_variant.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0001.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0002.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0003.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0101.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0102.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0103.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0104.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0105.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0106.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0107.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0108.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0109.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0110.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0111.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0201.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0202.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0203.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0301.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0302.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0303.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0401.pot | 2 +- .../scripting/c_sharp/diagnostics/GD0402.pot | 2 +- .../scripting/c_sharp/diagnostics/index.pot | 2 +- .../tutorials/scripting/c_sharp/index.pot | 2 +- .../scripting/change_scenes_manually.pot | 2 +- .../scripting/cpp/about_godot_cpp.pot | 4 +- .../scripting/cpp/build_system/cmake.pot | 342 + .../scripting/cpp/build_system/index.pot | 20 + .../scripting/cpp/build_system/scons.pot | 144 + .../tutorials/scripting/cpp/core_types.pot | 116 + .../scripting/cpp/gdextension_cpp_example.pot | 178 +- .../scripting/cpp/gdextension_docs_system.pot | 2 +- .../tutorials/scripting/cpp/index.pot | 2 +- .../scripting/creating_script_templates.pot | 2 +- .../scripting/cross_language_scripting.pot | 2 +- .../debug/custom_performance_monitors.pot | 4 +- .../scripting/debug/debugger_panel.pot | 2 +- .../tutorials/scripting/debug/index.pot | 2 +- .../scripting/debug/objectdb_profiler.pot | 242 + .../scripting/debug/output_panel.pot | 2 +- .../debug/overview_of_debugging_tools.pot | 2 +- .../scripting/debug/the_profiler.pot | 2 +- .../scripting/evaluating_expressions.pot | 2 +- .../tutorials/scripting/filesystem.pot | 2 +- .../gdextension/gdextension_c_example.pot | 322 +- .../gdextension/gdextension_file.pot | 144 +- .../tutorials/scripting/gdextension/index.pot | 2 +- .../gdextension/what_is_gdextension.pot | 2 +- .../scripting/gdscript/gdscript_advanced.pot | 2 +- .../scripting/gdscript/gdscript_basics.pot | 416 +- .../gdscript_documentation_comments.pot | 2 +- .../scripting/gdscript/gdscript_exports.pot | 28 +- .../gdscript/gdscript_format_string.pot | 2 +- .../gdscript/gdscript_styleguide.pot | 2 +- .../tutorials/scripting/gdscript/index.pot | 2 +- .../scripting/gdscript/static_typing.pot | 82 +- .../scripting/gdscript/warning_system.pot | 2 +- .../templates/tutorials/scripting/groups.pot | 2 +- .../scripting/how_to_read_the_godot_api.pot | 2 +- .../scripting/idle_and_physics_processing.pot | 2 +- .../templates/tutorials/scripting/index.pot | 2 +- .../scripting/instancing_with_signals.pot | 2 +- .../templates/tutorials/scripting/logging.pot | 2 +- .../scripting/nodes_and_scene_instances.pot | 2 +- .../tutorials/scripting/other_languages.pot | 2 +- .../scripting/overridable_functions.pot | 2 +- .../tutorials/scripting/pausing_games.pot | 2 +- .../tutorials/scripting/resources.pot | 2 +- .../tutorials/scripting/scene_tree.pot | 2 +- .../scripting/scene_unique_nodes.pot | 2 +- .../scripting/singletons_autoload.pot | 4 +- .../shaders/advanced_postprocessing.pot | 2 +- .../tutorials/shaders/compute_shaders.pot | 2 +- .../converting_glsl_to_godot_shaders.pot | 2 +- .../shaders/custom_postprocessing.pot | 2 +- sphinx/templates/tutorials/shaders/index.pot | 2 +- .../shaders/introduction_to_shaders.pot | 2 +- .../tutorials/shaders/making_trees.pot | 2 +- .../shaders/screen-reading_shaders.pot | 2 +- .../shader_reference/canvas_item_shader.pot | 32 +- .../shaders/shader_reference/fog_shader.pot | 74 +- .../shaders/shader_reference/index.pot | 2 +- .../shader_reference/particle_shader.pot | 40 +- .../shader_reference/shader_functions.pot | 6 +- .../shader_reference/shader_preprocessor.pot | 4 +- .../shader_reference/shading_language.pot | 650 +- .../shaders/shader_reference/sky_shader.pot | 26 +- .../shader_reference/spatial_shader.pot | 909 +- .../tutorials/shaders/shaders_style_guide.pot | 2 +- .../shaders/using_viewport_as_texture.pot | 2 +- .../tutorials/shaders/visual_shaders.pot | 2 +- .../shaders/your_first_shader/index.pot | 2 +- .../your_first_2d_shader.pot | 2 +- .../your_first_3d_shader.pot | 2 +- .../your_second_3d_shader.pot | 2 +- .../templates/tutorials/troubleshooting.pot | 4 +- .../tutorials/ui/bbcode_in_richtextlabel.pot | 4 +- .../tutorials/ui/control_node_gallery.pot | 2 +- .../tutorials/ui/custom_gui_controls.pot | 2 +- .../templates/tutorials/ui/gui_containers.pot | 2 +- .../templates/tutorials/ui/gui_navigation.pot | 2 +- .../templates/tutorials/ui/gui_skinning.pot | 2 +- .../ui/gui_theme_type_variations.pot | 2 +- .../tutorials/ui/gui_using_fonts.pot | 4 +- .../tutorials/ui/gui_using_theme_editor.pot | 2 +- sphinx/templates/tutorials/ui/index.pot | 2 +- .../tutorials/ui/size_and_anchors.pot | 2 +- .../tutorials/xr/a_better_xr_start_script.pot | 2 +- .../templates/tutorials/xr/ar_passthrough.pot | 2 +- .../tutorials/xr/basic_xr_locomotion.pot | 2 +- .../tutorials/xr/deploying_to_android.pot | 60 +- sphinx/templates/tutorials/xr/index.pot | 4 +- .../tutorials/xr/introducing_xr_tools.pot | 2 +- .../tutorials/xr/openxr_body_tracking.pot | 2 +- .../xr/openxr_composition_layers.pot | 2 +- .../tutorials/xr/openxr_hand_tracking.pot | 2 +- .../tutorials/xr/openxr_render_models.pot | 2 +- .../tutorials/xr/openxr_settings.pot | 2 +- .../tutorials/xr/openxr_spatial_entities.pot | 803 + .../templates/tutorials/xr/setting_up_xr.pot | 4 +- .../templates/tutorials/xr/xr_action_map.pot | 4 +- .../tutorials/xr/xr_full_screen_effects.pot | 2 +- .../templates/tutorials/xr/xr_next_steps.pot | 44 +- .../templates/tutorials/xr/xr_room_scale.pot | 2 +- templates_list.txt | 9 + weblate/docs.pot | 12963 ++++++++++------ 497 files changed, 16612 insertions(+), 9465 deletions(-) create mode 100644 sphinx/templates/engine_details/development/debugging/profiling/sampling_profilers.pot create mode 100644 sphinx/templates/engine_details/development/debugging/profiling/tracing_profilers.pot create mode 100644 sphinx/templates/tutorials/platform/android/resolving_crashes_on_android.pot create mode 100644 sphinx/templates/tutorials/scripting/cpp/build_system/cmake.pot create mode 100644 sphinx/templates/tutorials/scripting/cpp/build_system/index.pot create mode 100644 sphinx/templates/tutorials/scripting/cpp/build_system/scons.pot create mode 100644 sphinx/templates/tutorials/scripting/cpp/core_types.pot create mode 100644 sphinx/templates/tutorials/scripting/debug/objectdb_profiler.pot create mode 100644 sphinx/templates/tutorials/xr/openxr_spatial_entities.pot diff --git a/docs b/docs index 6b88cbfd0c..c5befa1494 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit 6b88cbfd0cc56a817a84fab49203c4fe6220cd55 +Subproject commit c5befa1494b6a163c9079c8fcc349159ee1dda17 diff --git a/sphinx/templates/404.pot b/sphinx/templates/404.pot index 85e2582cae..37195e5460 100644 --- a/sphinx/templates/404.pot +++ b/sphinx/templates/404.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/about/complying_with_licenses.pot b/sphinx/templates/about/complying_with_licenses.pot index 274851d51e..9ad3131b2e 100644 --- a/sphinx/templates/about/complying_with_licenses.pot +++ b/sphinx/templates/about/complying_with_licenses.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/about/docs_changelog.pot b/sphinx/templates/about/docs_changelog.pot index 5ac7d4822e..52419fca9d 100644 --- a/sphinx/templates/about/docs_changelog.pot +++ b/sphinx/templates/about/docs_changelog.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -23,912 +23,941 @@ msgstr "" msgid "The documentation is continually being improved. New releases include new pages, fixes and updates to existing pages, and many updates to the :ref:`class reference `. Below is a list of new pages added since version 3.0." msgstr "" -#: ../../docs/about/docs_changelog.rst:13 -msgid "This document only contains new pages so not all changes are reflected, many pages have been substantially updated but are not reflected in this document." +#: ../../docs/about/docs_changelog.rst:15 +msgid "This document only contains new pages, so not all changes are reflected. Many pages have been substantially updated but are not reflected in this document." msgstr "" -#: ../../docs/about/docs_changelog.rst:17 -msgid "New pages since version 4.3" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:20 -#: ../../docs/about/docs_changelog.rst:73 -#: ../../docs/about/docs_changelog.rst:160 -#: ../../docs/about/docs_changelog.rst:345 -#: ../../docs/about/docs_changelog.rst:450 -msgid "2D" +#: ../../docs/about/docs_changelog.rst:19 +msgid "New pages since version 4.4" msgstr "" #: ../../docs/about/docs_changelog.rst:22 -msgid ":ref:`doc_introduction_to_2d`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:25 -#: ../../docs/about/docs_changelog.rst:165 -#: ../../docs/about/docs_changelog.rst:233 -#: ../../docs/about/docs_changelog.rst:259 -#: ../../docs/about/docs_changelog.rst:456 -msgid "3D" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:27 -msgid ":ref:`doc_spring_arm`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:30 -msgid "Debug" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:32 -msgid ":ref:`doc_output_panel`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:35 -#: ../../docs/about/docs_changelog.rst:243 -#: ../../docs/about/docs_changelog.rst:284 +#: ../../docs/about/docs_changelog.rst:61 +#: ../../docs/about/docs_changelog.rst:274 +#: ../../docs/about/docs_changelog.rst:315 msgid "Editor" msgstr "" -#: ../../docs/about/docs_changelog.rst:37 -msgid ":ref:`doc_using_the_xr_editor`" +#: ../../docs/about/docs_changelog.rst:24 +msgid ":ref:`doc_engine_compilation_configuration_editor`" msgstr "" -#: ../../docs/about/docs_changelog.rst:40 -msgid "Performance" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:42 -msgid ":ref:`doc_pipeline_compilations`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:45 -#: ../../docs/about/docs_changelog.rst:152 -#: ../../docs/about/docs_changelog.rst:200 -#: ../../docs/about/docs_changelog.rst:312 -#: ../../docs/about/docs_changelog.rst:463 -msgid "Physics" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:47 -msgid ":ref:`doc_physics_interpolation`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:48 -msgid ":ref:`doc_physics_interpolation_quick_start_guide`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:49 -msgid ":ref:`doc_physics_interpolation_introduction`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:50 -msgid ":ref:`doc_using_physics_interpolation`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:51 -msgid ":ref:`doc_advanced_physics_interpolation`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:52 -msgid ":ref:`doc_2d_and_3d_physics_interpolation`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:55 -#: ../../docs/about/docs_changelog.rst:94 -msgid "Rendering" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:57 -msgid ":ref:`doc_renderers`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:60 -#: ../../docs/about/docs_changelog.rst:213 -#: ../../docs/about/docs_changelog.rst:318 -msgid "Shaders" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:62 -msgid ":ref:`doc_shader_functions`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:65 -msgid "New pages since version 4.2" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:68 -#: ../../docs/about/docs_changelog.rst:264 -msgid "About" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:70 -msgid ":ref:`doc_system_requirements`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:75 -msgid ":ref:`doc_2d_parallax`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:78 -msgid "Contributing" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:80 -msgid ":ref:`doc_handling_compatibility_breakages`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:83 +#: ../../docs/about/docs_changelog.rst:27 +#: ../../docs/about/docs_changelog.rst:114 msgid "GDExtension" msgstr "" -#: ../../docs/about/docs_changelog.rst:85 -msgid ":ref:`doc_gdextension_file`" +#: ../../docs/about/docs_changelog.rst:29 +msgid ":ref:`doc_gdextension_c_example`" msgstr "" -#: ../../docs/about/docs_changelog.rst:86 -msgid ":ref:`doc_godot_cpp_docs_system`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:89 -#: ../../docs/about/docs_changelog.rst:123 -#: ../../docs/about/docs_changelog.rst:147 -#: ../../docs/about/docs_changelog.rst:195 +#: ../../docs/about/docs_changelog.rst:32 +#: ../../docs/about/docs_changelog.rst:66 +#: ../../docs/about/docs_changelog.rst:120 +#: ../../docs/about/docs_changelog.rst:154 +#: ../../docs/about/docs_changelog.rst:178 +#: ../../docs/about/docs_changelog.rst:226 msgid "Migrating" msgstr "" -#: ../../docs/about/docs_changelog.rst:91 -msgid ":ref:`doc_upgrading_to_godot_4.3`" +#: ../../docs/about/docs_changelog.rst:34 +msgid ":ref:`doc_upgrading_to_godot_4.5`" msgstr "" -#: ../../docs/about/docs_changelog.rst:96 -msgid ":ref:`doc_compositor`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:99 -#: ../../docs/about/docs_changelog.rst:218 -msgid "XR" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:101 -msgid ":ref:`doc_a_better_xr_start_script`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:102 -msgid ":ref:`doc_openxr_passthrough`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:103 -msgid ":ref:`doc_xr_next_steps`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:104 -msgid ":ref:`doc_openxr_settings`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:105 -msgid ":ref:`doc_openxr_composition_layers`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:106 -msgid ":ref:`doc_openxr_body_tracking`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:110 -msgid "New pages since version 4.1" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:113 -msgid "C#" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:115 -msgid ":ref:`doc_c_sharp_diagnostics`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:118 -#: ../../docs/about/docs_changelog.rst:141 -#: ../../docs/about/docs_changelog.rst:190 -#: ../../docs/about/docs_changelog.rst:276 -msgid "Development" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:120 -msgid ":ref:`doc_2d_coordinate_systems`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:125 -msgid ":ref:`doc_upgrading_to_godot_4.2`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:128 -msgid "I/O" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:130 -msgid ":ref:`doc_runtime_loading_and_saving`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:133 -#: ../../docs/about/docs_changelog.rst:305 -#: ../../docs/about/docs_changelog.rst:506 -msgid "Platform-specific" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:135 -msgid ":ref:`doc_android_library`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:138 -msgid "New pages since version 4.0" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:143 -msgid ":ref:`doc_internal_rendering_architecture`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:144 -msgid ":ref:`doc_using_sanitizers`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:149 -msgid ":ref:`doc_upgrading_to_godot_4.1`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:154 -msgid ":ref:`doc_troubleshooting_physics_issues`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:157 -msgid "New pages since version 3.6" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:162 -msgid ":ref:`doc_2d_antialiasing`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:167 -msgid ":ref:`doc_3d_antialiasing`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:168 -msgid ":ref:`doc_faking_global_illumination`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:169 -msgid ":ref:`doc_introduction_to_global_illumination`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:170 -msgid ":ref:`doc_mesh_lod`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:171 -msgid ":ref:`doc_occlusion_culling`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:172 -msgid ":ref:`doc_using_sdfgi`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:173 -msgid ":ref:`doc_using_decals`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:174 -msgid ":ref:`doc_visibility_ranges`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:175 -msgid ":ref:`doc_volumetric_fog`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:176 -msgid ":ref:`doc_variable_rate_shading`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:177 -msgid ":ref:`doc_physical_light_and_camera_units`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:180 -#: ../../docs/about/docs_changelog.rst:238 -#: ../../docs/about/docs_changelog.rst:469 -msgid "Animation" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:182 -msgid ":ref:`doc_creating_movies`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:185 -msgid "Assets pipeline" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:187 -msgid ":ref:`doc_retargeting_3d_skeletons`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:192 -msgid ":ref:`doc_custom_platform_ports`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:197 -msgid ":ref:`doc_upgrading_to_godot_4`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:202 -msgid ":ref:`doc_large_world_coordinates`" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:205 -#: ../../docs/about/docs_changelog.rst:323 -#: ../../docs/about/docs_changelog.rst:429 +#: ../../docs/about/docs_changelog.rst:38 +#: ../../docs/about/docs_changelog.rst:236 +#: ../../docs/about/docs_changelog.rst:354 +#: ../../docs/about/docs_changelog.rst:460 msgid "Scripting" msgstr "" +#: ../../docs/about/docs_changelog.rst:40 +msgid ":ref:`doc_logging`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:43 +msgid "New pages since version 4.3" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:46 +#: ../../docs/about/docs_changelog.rst:104 +#: ../../docs/about/docs_changelog.rst:191 +#: ../../docs/about/docs_changelog.rst:376 +#: ../../docs/about/docs_changelog.rst:481 +msgid "2D" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:48 +msgid ":ref:`doc_introduction_to_2d`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:51 +#: ../../docs/about/docs_changelog.rst:196 +#: ../../docs/about/docs_changelog.rst:264 +#: ../../docs/about/docs_changelog.rst:290 +#: ../../docs/about/docs_changelog.rst:487 +msgid "3D" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:53 +msgid ":ref:`doc_spring_arm`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:56 +msgid "Debug" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:58 +msgid ":ref:`doc_output_panel`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:63 +msgid ":ref:`doc_using_the_xr_editor`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:68 +msgid ":ref:`doc_upgrading_to_godot_4.4`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:71 +msgid "Performance" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:73 +msgid ":ref:`doc_pipeline_compilations`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:76 +#: ../../docs/about/docs_changelog.rst:183 +#: ../../docs/about/docs_changelog.rst:231 +#: ../../docs/about/docs_changelog.rst:343 +#: ../../docs/about/docs_changelog.rst:494 +msgid "Physics" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:78 +msgid ":ref:`doc_physics_interpolation`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:79 +msgid ":ref:`doc_physics_interpolation_quick_start_guide`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:80 +msgid ":ref:`doc_physics_interpolation_introduction`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:81 +msgid ":ref:`doc_using_physics_interpolation`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:82 +msgid ":ref:`doc_advanced_physics_interpolation`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:83 +msgid ":ref:`doc_2d_and_3d_physics_interpolation`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:86 +#: ../../docs/about/docs_changelog.rst:125 +msgid "Rendering" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:88 +msgid ":ref:`doc_renderers`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:91 +#: ../../docs/about/docs_changelog.rst:244 +#: ../../docs/about/docs_changelog.rst:349 +msgid "Shaders" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:93 +msgid ":ref:`doc_shader_functions`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:96 +msgid "New pages since version 4.2" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:99 +#: ../../docs/about/docs_changelog.rst:295 +msgid "About" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:101 +msgid ":ref:`doc_system_requirements`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:106 +msgid ":ref:`doc_2d_parallax`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:109 +msgid "Contributing" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:111 +msgid ":ref:`doc_handling_compatibility_breakages`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:116 +msgid ":ref:`doc_gdextension_file`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:117 +msgid ":ref:`doc_godot_cpp_docs_system`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:122 +msgid ":ref:`doc_upgrading_to_godot_4.3`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:127 +msgid ":ref:`doc_compositor`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:130 +#: ../../docs/about/docs_changelog.rst:249 +msgid "XR" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:132 +msgid ":ref:`doc_a_better_xr_start_script`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:133 +msgid ":ref:`doc_openxr_passthrough`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:134 +msgid ":ref:`doc_xr_next_steps`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:135 +msgid ":ref:`doc_openxr_settings`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:136 +msgid ":ref:`doc_openxr_composition_layers`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:137 +msgid ":ref:`doc_openxr_body_tracking`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:141 +msgid "New pages since version 4.1" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:144 +msgid "C#" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:146 +msgid ":ref:`doc_c_sharp_diagnostics`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:149 +#: ../../docs/about/docs_changelog.rst:172 +#: ../../docs/about/docs_changelog.rst:221 +#: ../../docs/about/docs_changelog.rst:307 +msgid "Development" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:151 +msgid ":ref:`doc_2d_coordinate_systems`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:156 +msgid ":ref:`doc_upgrading_to_godot_4.2`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:159 +msgid "I/O" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:161 +msgid ":ref:`doc_runtime_loading_and_saving`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:164 +#: ../../docs/about/docs_changelog.rst:336 +#: ../../docs/about/docs_changelog.rst:537 +msgid "Platform-specific" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:166 +msgid ":ref:`doc_android_library`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:169 +msgid "New pages since version 4.0" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:174 +msgid ":ref:`doc_internal_rendering_architecture`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:175 +msgid ":ref:`doc_using_sanitizers`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:180 +msgid ":ref:`doc_upgrading_to_godot_4.1`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:185 +msgid ":ref:`doc_troubleshooting_physics_issues`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:188 +msgid "New pages since version 3.6" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:193 +msgid ":ref:`doc_2d_antialiasing`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:198 +msgid ":ref:`doc_3d_antialiasing`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:199 +msgid ":ref:`doc_faking_global_illumination`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:200 +msgid ":ref:`doc_introduction_to_global_illumination`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:201 +msgid ":ref:`doc_mesh_lod`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:202 +msgid ":ref:`doc_occlusion_culling`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:203 +msgid ":ref:`doc_using_sdfgi`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:204 +msgid ":ref:`doc_using_decals`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:205 +msgid ":ref:`doc_visibility_ranges`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:206 +msgid ":ref:`doc_volumetric_fog`" +msgstr "" + #: ../../docs/about/docs_changelog.rst:207 -msgid ":ref:`doc_custom_performance_monitors`" +msgid ":ref:`doc_variable_rate_shading`" msgstr "" #: ../../docs/about/docs_changelog.rst:208 +msgid ":ref:`doc_physical_light_and_camera_units`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:211 +#: ../../docs/about/docs_changelog.rst:269 +#: ../../docs/about/docs_changelog.rst:500 +msgid "Animation" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:213 +msgid ":ref:`doc_creating_movies`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:216 +msgid "Assets pipeline" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:218 +msgid ":ref:`doc_retargeting_3d_skeletons`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:223 +msgid ":ref:`doc_custom_platform_ports`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:228 +msgid ":ref:`doc_upgrading_to_godot_4`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:233 +msgid ":ref:`doc_large_world_coordinates`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:238 +msgid ":ref:`doc_custom_performance_monitors`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:239 msgid ":ref:`doc_c_sharp_collections`" msgstr "" -#: ../../docs/about/docs_changelog.rst:209 +#: ../../docs/about/docs_changelog.rst:240 msgid ":ref:`doc_c_sharp_global_classes`" msgstr "" -#: ../../docs/about/docs_changelog.rst:210 +#: ../../docs/about/docs_changelog.rst:241 msgid ":ref:`doc_c_sharp_variant`" msgstr "" -#: ../../docs/about/docs_changelog.rst:215 +#: ../../docs/about/docs_changelog.rst:246 msgid ":ref:`doc_compute_shaders`" msgstr "" -#: ../../docs/about/docs_changelog.rst:220 +#: ../../docs/about/docs_changelog.rst:251 msgid ":ref:`doc_introducing_xr_tools`" msgstr "" -#: ../../docs/about/docs_changelog.rst:221 +#: ../../docs/about/docs_changelog.rst:252 msgid ":ref:`doc_xr_action_map`" msgstr "" -#: ../../docs/about/docs_changelog.rst:222 +#: ../../docs/about/docs_changelog.rst:253 msgid ":ref:`doc_deploying_to_android`" msgstr "" -#: ../../docs/about/docs_changelog.rst:225 +#: ../../docs/about/docs_changelog.rst:256 msgid "New pages since version 3.5" msgstr "" -#: ../../docs/about/docs_changelog.rst:227 +#: ../../docs/about/docs_changelog.rst:258 msgid "None." msgstr "" -#: ../../docs/about/docs_changelog.rst:230 +#: ../../docs/about/docs_changelog.rst:261 msgid "New pages since version 3.4" msgstr "" -#: ../../docs/about/docs_changelog.rst:235 +#: ../../docs/about/docs_changelog.rst:266 msgid ":ref:`doc_3d_text`" msgstr "" -#: ../../docs/about/docs_changelog.rst:240 +#: ../../docs/about/docs_changelog.rst:271 msgid ":ref:`doc_playing_videos`" msgstr "" -#: ../../docs/about/docs_changelog.rst:245 +#: ../../docs/about/docs_changelog.rst:276 msgid ":ref:`doc_managing_editor_features`" msgstr "" -#: ../../docs/about/docs_changelog.rst:248 +#: ../../docs/about/docs_changelog.rst:279 msgid "New pages since version 3.3" msgstr "" -#: ../../docs/about/docs_changelog.rst:251 +#: ../../docs/about/docs_changelog.rst:282 msgid "GDScript" msgstr "" -#: ../../docs/about/docs_changelog.rst:253 +#: ../../docs/about/docs_changelog.rst:284 msgid ":ref:`doc_gdscript_documentation_comments`" msgstr "" -#: ../../docs/about/docs_changelog.rst:256 +#: ../../docs/about/docs_changelog.rst:287 msgid "New pages since version 3.2" msgstr "" -#: ../../docs/about/docs_changelog.rst:261 +#: ../../docs/about/docs_changelog.rst:292 msgid ":ref:`doc_3d_rendering_limitations`" msgstr "" -#: ../../docs/about/docs_changelog.rst:266 +#: ../../docs/about/docs_changelog.rst:297 msgid ":ref:`doc_troubleshooting`" msgstr "" -#: ../../docs/about/docs_changelog.rst:267 +#: ../../docs/about/docs_changelog.rst:298 msgid ":ref:`doc_list_of_features`" msgstr "" -#: ../../docs/about/docs_changelog.rst:268 +#: ../../docs/about/docs_changelog.rst:299 msgid ":ref:`doc_release_policy`" msgstr "" -#: ../../docs/about/docs_changelog.rst:271 +#: ../../docs/about/docs_changelog.rst:302 msgid "Best practices" msgstr "" -#: ../../docs/about/docs_changelog.rst:273 +#: ../../docs/about/docs_changelog.rst:304 msgid ":ref:`doc_version_control_systems`" msgstr "" -#: ../../docs/about/docs_changelog.rst:278 +#: ../../docs/about/docs_changelog.rst:309 msgid ":ref:`doc_common_engine_methods_and_macros_error_macros`" msgstr "" -#: ../../docs/about/docs_changelog.rst:279 +#: ../../docs/about/docs_changelog.rst:310 msgid ":ref:`doc_vulkan_validation_layers`" msgstr "" -#: ../../docs/about/docs_changelog.rst:280 +#: ../../docs/about/docs_changelog.rst:311 msgid ":ref:`doc_gdscript_grammar`" msgstr "" -#: ../../docs/about/docs_changelog.rst:281 +#: ../../docs/about/docs_changelog.rst:312 msgid "Configuring an IDE: :ref:`doc_configuring_an_ide_code_blocks`" msgstr "" -#: ../../docs/about/docs_changelog.rst:286 +#: ../../docs/about/docs_changelog.rst:317 msgid ":ref:`doc_default_key_mapping`" msgstr "" -#: ../../docs/about/docs_changelog.rst:287 +#: ../../docs/about/docs_changelog.rst:318 msgid ":ref:`doc_using_the_web_editor`" msgstr "" -#: ../../docs/about/docs_changelog.rst:290 +#: ../../docs/about/docs_changelog.rst:321 msgid "Export" msgstr "" -#: ../../docs/about/docs_changelog.rst:292 +#: ../../docs/about/docs_changelog.rst:323 msgid ":ref:`doc_exporting_for_dedicated_servers`" msgstr "" -#: ../../docs/about/docs_changelog.rst:295 +#: ../../docs/about/docs_changelog.rst:326 msgid "Input" msgstr "" -#: ../../docs/about/docs_changelog.rst:297 +#: ../../docs/about/docs_changelog.rst:328 msgid ":ref:`doc_controllers_gamepads_joysticks`" msgstr "" -#: ../../docs/about/docs_changelog.rst:300 -#: ../../docs/about/docs_changelog.rst:356 +#: ../../docs/about/docs_changelog.rst:331 +#: ../../docs/about/docs_changelog.rst:387 msgid "Math" msgstr "" -#: ../../docs/about/docs_changelog.rst:302 +#: ../../docs/about/docs_changelog.rst:333 msgid ":ref:`doc_random_number_generation`" msgstr "" -#: ../../docs/about/docs_changelog.rst:307 +#: ../../docs/about/docs_changelog.rst:338 msgid ":ref:`doc_plugins_for_ios`" msgstr "" -#: ../../docs/about/docs_changelog.rst:308 +#: ../../docs/about/docs_changelog.rst:339 msgid ":ref:`doc_ios_plugin`" msgstr "" -#: ../../docs/about/docs_changelog.rst:309 +#: ../../docs/about/docs_changelog.rst:340 msgid ":ref:`doc_html5_shell_classref`" msgstr "" -#: ../../docs/about/docs_changelog.rst:314 +#: ../../docs/about/docs_changelog.rst:345 msgid ":ref:`doc_collision_shapes_2d`" msgstr "" -#: ../../docs/about/docs_changelog.rst:315 +#: ../../docs/about/docs_changelog.rst:346 msgid ":ref:`doc_collision_shapes_3d`" msgstr "" -#: ../../docs/about/docs_changelog.rst:320 +#: ../../docs/about/docs_changelog.rst:351 msgid ":ref:`doc_shaders_style_guide`" msgstr "" -#: ../../docs/about/docs_changelog.rst:325 +#: ../../docs/about/docs_changelog.rst:356 msgid ":ref:`doc_debugger_panel`" msgstr "" -#: ../../docs/about/docs_changelog.rst:326 +#: ../../docs/about/docs_changelog.rst:357 msgid ":ref:`doc_creating_script_templates`" msgstr "" -#: ../../docs/about/docs_changelog.rst:327 +#: ../../docs/about/docs_changelog.rst:358 msgid ":ref:`doc_evaluating_expressions`" msgstr "" -#: ../../docs/about/docs_changelog.rst:328 +#: ../../docs/about/docs_changelog.rst:359 msgid ":ref:`doc_what_is_gdextension`" msgstr "" -#: ../../docs/about/docs_changelog.rst:329 +#: ../../docs/about/docs_changelog.rst:360 msgid ":ref:`doc_gdscript_warning_system` (split from :ref:`doc_gdscript_static_typing`)" msgstr "" -#: ../../docs/about/docs_changelog.rst:332 +#: ../../docs/about/docs_changelog.rst:363 msgid "User Interface (UI)" msgstr "" -#: ../../docs/about/docs_changelog.rst:334 +#: ../../docs/about/docs_changelog.rst:365 msgid ":ref:`doc_control_node_gallery`" msgstr "" -#: ../../docs/about/docs_changelog.rst:337 +#: ../../docs/about/docs_changelog.rst:368 msgid "New pages since version 3.1" msgstr "" -#: ../../docs/about/docs_changelog.rst:340 -#: ../../docs/about/docs_changelog.rst:434 +#: ../../docs/about/docs_changelog.rst:371 +#: ../../docs/about/docs_changelog.rst:465 msgid "Project workflow" msgstr "" -#: ../../docs/about/docs_changelog.rst:342 +#: ../../docs/about/docs_changelog.rst:373 msgid ":ref:`doc_android_gradle_build`" msgstr "" -#: ../../docs/about/docs_changelog.rst:347 +#: ../../docs/about/docs_changelog.rst:378 msgid ":ref:`doc_2d_sprite_animation`" msgstr "" -#: ../../docs/about/docs_changelog.rst:350 +#: ../../docs/about/docs_changelog.rst:381 msgid "Audio" msgstr "" -#: ../../docs/about/docs_changelog.rst:352 +#: ../../docs/about/docs_changelog.rst:383 msgid ":ref:`doc_recording_with_microphone`" msgstr "" -#: ../../docs/about/docs_changelog.rst:353 +#: ../../docs/about/docs_changelog.rst:384 msgid ":ref:`doc_sync_with_audio`" msgstr "" -#: ../../docs/about/docs_changelog.rst:358 +#: ../../docs/about/docs_changelog.rst:389 msgid ":ref:`doc_beziers_and_curves`" msgstr "" -#: ../../docs/about/docs_changelog.rst:359 +#: ../../docs/about/docs_changelog.rst:390 msgid ":ref:`doc_interpolation`" msgstr "" -#: ../../docs/about/docs_changelog.rst:362 +#: ../../docs/about/docs_changelog.rst:393 msgid "Inputs" msgstr "" -#: ../../docs/about/docs_changelog.rst:364 +#: ../../docs/about/docs_changelog.rst:395 msgid ":ref:`doc_input_examples`" msgstr "" -#: ../../docs/about/docs_changelog.rst:367 +#: ../../docs/about/docs_changelog.rst:398 msgid "Internationalization" msgstr "" -#: ../../docs/about/docs_changelog.rst:369 +#: ../../docs/about/docs_changelog.rst:400 msgid ":ref:`doc_localization_using_gettext`" msgstr "" -#: ../../docs/about/docs_changelog.rst:372 -#: ../../docs/about/docs_changelog.rst:486 +#: ../../docs/about/docs_changelog.rst:403 +#: ../../docs/about/docs_changelog.rst:517 msgid "Shading" msgstr "" -#: ../../docs/about/docs_changelog.rst:374 +#: ../../docs/about/docs_changelog.rst:405 msgid "Your First Shader Series:" msgstr "" -#: ../../docs/about/docs_changelog.rst:375 -#: ../../docs/about/docs_changelog.rst:493 +#: ../../docs/about/docs_changelog.rst:406 +#: ../../docs/about/docs_changelog.rst:524 msgid ":ref:`doc_introduction_to_shaders`" msgstr "" -#: ../../docs/about/docs_changelog.rst:376 +#: ../../docs/about/docs_changelog.rst:407 msgid ":ref:`doc_your_first_canvasitem_shader`" msgstr "" -#: ../../docs/about/docs_changelog.rst:377 +#: ../../docs/about/docs_changelog.rst:408 msgid ":ref:`doc_your_first_spatial_shader`" msgstr "" -#: ../../docs/about/docs_changelog.rst:378 +#: ../../docs/about/docs_changelog.rst:409 msgid ":ref:`doc_your_second_spatial_shader`" msgstr "" -#: ../../docs/about/docs_changelog.rst:379 +#: ../../docs/about/docs_changelog.rst:410 msgid ":ref:`doc_visual_shaders`" msgstr "" -#: ../../docs/about/docs_changelog.rst:382 +#: ../../docs/about/docs_changelog.rst:413 msgid "Networking" msgstr "" -#: ../../docs/about/docs_changelog.rst:384 +#: ../../docs/about/docs_changelog.rst:415 msgid ":ref:`doc_webrtc`" msgstr "" -#: ../../docs/about/docs_changelog.rst:387 -#: ../../docs/about/docs_changelog.rst:500 +#: ../../docs/about/docs_changelog.rst:418 +#: ../../docs/about/docs_changelog.rst:531 msgid "Plugins" msgstr "" -#: ../../docs/about/docs_changelog.rst:389 +#: ../../docs/about/docs_changelog.rst:420 msgid ":ref:`doc_android_plugin`" msgstr "" -#: ../../docs/about/docs_changelog.rst:390 +#: ../../docs/about/docs_changelog.rst:421 msgid ":ref:`doc_inspector_plugins`" msgstr "" -#: ../../docs/about/docs_changelog.rst:391 +#: ../../docs/about/docs_changelog.rst:422 msgid ":ref:`doc_visual_shader_plugins`" msgstr "" -#: ../../docs/about/docs_changelog.rst:394 -#: ../../docs/about/docs_changelog.rst:511 +#: ../../docs/about/docs_changelog.rst:425 +#: ../../docs/about/docs_changelog.rst:542 msgid "Multi-threading" msgstr "" -#: ../../docs/about/docs_changelog.rst:396 +#: ../../docs/about/docs_changelog.rst:427 msgid ":ref:`doc_using_multiple_threads`" msgstr "" -#: ../../docs/about/docs_changelog.rst:399 -#: ../../docs/about/docs_changelog.rst:516 +#: ../../docs/about/docs_changelog.rst:430 +#: ../../docs/about/docs_changelog.rst:547 msgid "Creating content" msgstr "" -#: ../../docs/about/docs_changelog.rst:401 +#: ../../docs/about/docs_changelog.rst:432 msgid "Procedural geometry series:" msgstr "" -#: ../../docs/about/docs_changelog.rst:402 +#: ../../docs/about/docs_changelog.rst:433 msgid ":ref:`Procedural geometry `" msgstr "" -#: ../../docs/about/docs_changelog.rst:403 +#: ../../docs/about/docs_changelog.rst:434 msgid ":ref:`doc_arraymesh`" msgstr "" -#: ../../docs/about/docs_changelog.rst:404 +#: ../../docs/about/docs_changelog.rst:435 msgid ":ref:`doc_surfacetool`" msgstr "" -#: ../../docs/about/docs_changelog.rst:405 +#: ../../docs/about/docs_changelog.rst:436 msgid ":ref:`doc_meshdatatool`" msgstr "" -#: ../../docs/about/docs_changelog.rst:406 +#: ../../docs/about/docs_changelog.rst:437 msgid ":ref:`doc_immediatemesh`" msgstr "" -#: ../../docs/about/docs_changelog.rst:409 +#: ../../docs/about/docs_changelog.rst:440 msgid "Optimization" msgstr "" -#: ../../docs/about/docs_changelog.rst:411 +#: ../../docs/about/docs_changelog.rst:442 msgid ":ref:`doc_using_multimesh`" msgstr "" -#: ../../docs/about/docs_changelog.rst:412 +#: ../../docs/about/docs_changelog.rst:443 msgid ":ref:`doc_using_servers`" msgstr "" -#: ../../docs/about/docs_changelog.rst:415 +#: ../../docs/about/docs_changelog.rst:446 msgid "Legal" msgstr "" -#: ../../docs/about/docs_changelog.rst:417 +#: ../../docs/about/docs_changelog.rst:448 msgid ":ref:`doc_complying_with_licenses`" msgstr "" -#: ../../docs/about/docs_changelog.rst:420 +#: ../../docs/about/docs_changelog.rst:451 msgid "New pages since version 3.0" msgstr "" -#: ../../docs/about/docs_changelog.rst:423 +#: ../../docs/about/docs_changelog.rst:454 msgid "Step by step" msgstr "" -#: ../../docs/about/docs_changelog.rst:425 +#: ../../docs/about/docs_changelog.rst:456 msgid ":ref:`doc_signals`" msgstr "" -#: ../../docs/about/docs_changelog.rst:426 +#: ../../docs/about/docs_changelog.rst:457 msgid "Exporting" msgstr "" -#: ../../docs/about/docs_changelog.rst:431 +#: ../../docs/about/docs_changelog.rst:462 msgid ":ref:`doc_gdscript_static_typing`" msgstr "" -#: ../../docs/about/docs_changelog.rst:436 +#: ../../docs/about/docs_changelog.rst:467 msgid "Best Practices:" msgstr "" -#: ../../docs/about/docs_changelog.rst:438 +#: ../../docs/about/docs_changelog.rst:469 msgid ":ref:`doc_introduction_best_practices`" msgstr "" -#: ../../docs/about/docs_changelog.rst:439 +#: ../../docs/about/docs_changelog.rst:470 msgid ":ref:`doc_what_are_godot_classes`" msgstr "" -#: ../../docs/about/docs_changelog.rst:440 +#: ../../docs/about/docs_changelog.rst:471 msgid ":ref:`doc_scene_organization`" msgstr "" -#: ../../docs/about/docs_changelog.rst:441 +#: ../../docs/about/docs_changelog.rst:472 msgid ":ref:`doc_scenes_versus_scripts`" msgstr "" -#: ../../docs/about/docs_changelog.rst:442 +#: ../../docs/about/docs_changelog.rst:473 msgid ":ref:`doc_autoloads_versus_internal_nodes`" msgstr "" -#: ../../docs/about/docs_changelog.rst:443 +#: ../../docs/about/docs_changelog.rst:474 msgid ":ref:`doc_node_alternatives`" msgstr "" -#: ../../docs/about/docs_changelog.rst:444 +#: ../../docs/about/docs_changelog.rst:475 msgid ":ref:`doc_godot_interfaces`" msgstr "" -#: ../../docs/about/docs_changelog.rst:445 +#: ../../docs/about/docs_changelog.rst:476 msgid ":ref:`doc_godot_notifications`" msgstr "" -#: ../../docs/about/docs_changelog.rst:446 +#: ../../docs/about/docs_changelog.rst:477 msgid ":ref:`doc_data_preferences`" msgstr "" -#: ../../docs/about/docs_changelog.rst:447 +#: ../../docs/about/docs_changelog.rst:478 msgid ":ref:`doc_logic_preferences`" msgstr "" -#: ../../docs/about/docs_changelog.rst:452 +#: ../../docs/about/docs_changelog.rst:483 msgid ":ref:`doc_2d_lights_and_shadows`" msgstr "" -#: ../../docs/about/docs_changelog.rst:453 +#: ../../docs/about/docs_changelog.rst:484 msgid ":ref:`doc_2d_meshes`" msgstr "" -#: ../../docs/about/docs_changelog.rst:458 +#: ../../docs/about/docs_changelog.rst:489 msgid ":ref:`doc_csg_tools`" msgstr "" -#: ../../docs/about/docs_changelog.rst:459 +#: ../../docs/about/docs_changelog.rst:490 msgid ":ref:`doc_animating_thousands_of_fish`" msgstr "" -#: ../../docs/about/docs_changelog.rst:460 +#: ../../docs/about/docs_changelog.rst:491 msgid ":ref:`doc_controlling_thousands_of_fish`" msgstr "" -#: ../../docs/about/docs_changelog.rst:465 +#: ../../docs/about/docs_changelog.rst:496 msgid ":ref:`doc_ragdoll_system`" msgstr "" -#: ../../docs/about/docs_changelog.rst:466 +#: ../../docs/about/docs_changelog.rst:497 msgid ":ref:`doc_soft_body`" msgstr "" -#: ../../docs/about/docs_changelog.rst:471 +#: ../../docs/about/docs_changelog.rst:502 msgid ":ref:`doc_2d_skeletons`" msgstr "" -#: ../../docs/about/docs_changelog.rst:472 +#: ../../docs/about/docs_changelog.rst:503 msgid ":ref:`doc_animation_tree`" msgstr "" -#: ../../docs/about/docs_changelog.rst:475 +#: ../../docs/about/docs_changelog.rst:506 msgid "GUI" msgstr "" -#: ../../docs/about/docs_changelog.rst:477 +#: ../../docs/about/docs_changelog.rst:508 msgid ":ref:`doc_gui_containers`" msgstr "" -#: ../../docs/about/docs_changelog.rst:480 +#: ../../docs/about/docs_changelog.rst:511 msgid "Viewports" msgstr "" -#: ../../docs/about/docs_changelog.rst:482 +#: ../../docs/about/docs_changelog.rst:513 msgid ":ref:`doc_viewport_as_texture`" msgstr "" -#: ../../docs/about/docs_changelog.rst:483 +#: ../../docs/about/docs_changelog.rst:514 msgid ":ref:`doc_custom_postprocessing`" msgstr "" -#: ../../docs/about/docs_changelog.rst:488 +#: ../../docs/about/docs_changelog.rst:519 msgid ":ref:`doc_converting_glsl_to_godot_shaders`" msgstr "" -#: ../../docs/about/docs_changelog.rst:489 +#: ../../docs/about/docs_changelog.rst:520 msgid ":ref:`doc_advanced_postprocessing`" msgstr "" -#: ../../docs/about/docs_changelog.rst:491 +#: ../../docs/about/docs_changelog.rst:522 msgid "Shading Reference:" msgstr "" -#: ../../docs/about/docs_changelog.rst:494 +#: ../../docs/about/docs_changelog.rst:525 msgid ":ref:`doc_shading_language`" msgstr "" -#: ../../docs/about/docs_changelog.rst:495 +#: ../../docs/about/docs_changelog.rst:526 msgid ":ref:`doc_spatial_shader`" msgstr "" -#: ../../docs/about/docs_changelog.rst:496 +#: ../../docs/about/docs_changelog.rst:527 msgid ":ref:`doc_canvas_item_shader`" msgstr "" -#: ../../docs/about/docs_changelog.rst:497 +#: ../../docs/about/docs_changelog.rst:528 msgid ":ref:`doc_particle_shader`" msgstr "" -#: ../../docs/about/docs_changelog.rst:502 +#: ../../docs/about/docs_changelog.rst:533 msgid ":ref:`doc_making_main_screen_plugins`" msgstr "" -#: ../../docs/about/docs_changelog.rst:503 +#: ../../docs/about/docs_changelog.rst:534 msgid ":ref:`doc_3d_gizmo_plugins`" msgstr "" -#: ../../docs/about/docs_changelog.rst:508 +#: ../../docs/about/docs_changelog.rst:539 msgid ":ref:`doc_customizing_html5_shell`" msgstr "" -#: ../../docs/about/docs_changelog.rst:513 +#: ../../docs/about/docs_changelog.rst:544 msgid ":ref:`doc_thread_safe_apis`" msgstr "" -#: ../../docs/about/docs_changelog.rst:518 +#: ../../docs/about/docs_changelog.rst:549 msgid ":ref:`doc_making_trees`" msgstr "" -#: ../../docs/about/docs_changelog.rst:521 +#: ../../docs/about/docs_changelog.rst:552 msgid "Miscellaneous" msgstr "" -#: ../../docs/about/docs_changelog.rst:523 +#: ../../docs/about/docs_changelog.rst:554 msgid ":ref:`doc_jitter_stutter`" msgstr "" -#: ../../docs/about/docs_changelog.rst:524 +#: ../../docs/about/docs_changelog.rst:555 msgid ":ref:`doc_running_code_in_the_editor`" msgstr "" -#: ../../docs/about/docs_changelog.rst:525 +#: ../../docs/about/docs_changelog.rst:556 msgid ":ref:`doc_change_scenes_manually`" msgstr "" -#: ../../docs/about/docs_changelog.rst:528 +#: ../../docs/about/docs_changelog.rst:559 msgid "Compiling" msgstr "" -#: ../../docs/about/docs_changelog.rst:530 +#: ../../docs/about/docs_changelog.rst:561 msgid ":ref:`doc_optimizing_for_size`" msgstr "" -#: ../../docs/about/docs_changelog.rst:531 +#: ../../docs/about/docs_changelog.rst:562 msgid ":ref:`doc_compiling_with_script_encryption_key`" msgstr "" -#: ../../docs/about/docs_changelog.rst:534 +#: ../../docs/about/docs_changelog.rst:565 msgid "Engine development" msgstr "" -#: ../../docs/about/docs_changelog.rst:536 +#: ../../docs/about/docs_changelog.rst:567 msgid ":ref:`doc_binding_to_external_libraries`" msgstr "" diff --git a/sphinx/templates/about/faq.pot b/sphinx/templates/about/faq.pot index c567babcdf..dae16f9496 100644 --- a/sphinx/templates/about/faq.pot +++ b/sphinx/templates/about/faq.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -349,325 +349,321 @@ msgid "If *true* portable operation is desired (e.g. for use on a USB stick), fo msgstr "" #: ../../docs/about/faq.rst:313 -msgid "Why does Godot prioritize Vulkan and OpenGL over Direct3D?" -msgstr "" - -#: ../../docs/about/faq.rst:315 -msgid "Godot aims for cross-platform compatibility and open standards first and foremost. OpenGL and Vulkan are the technologies that are both open and available on (nearly) all platforms. Thanks to this design decision, a project developed with Godot on Windows will run out of the box on Linux, macOS, and more." -msgstr "" - -#: ../../docs/about/faq.rst:321 -msgid "While Vulkan and OpenGL remain our primary focus for their open standard and cross-platform benefits, Godot 4.3 introduced experimental support for Direct3D 12. This addition aims to enhance performance and compatibility on platforms where Direct3D 12 is prevalent, such as Windows and Xbox. However, Vulkan and OpenGL will continue as the default rendering drivers on all platforms, including Windows." -msgstr "" - -#: ../../docs/about/faq.rst:328 msgid "Why does Godot aim to keep its core feature set small?" msgstr "" -#: ../../docs/about/faq.rst:330 +#: ../../docs/about/faq.rst:315 msgid "Godot intentionally does not include features that can be implemented by add-ons unless they are used very often. One example of something not used often is advanced artificial intelligence functionality." msgstr "" -#: ../../docs/about/faq.rst:334 +#: ../../docs/about/faq.rst:319 msgid "There are several reasons for this:" msgstr "" -#: ../../docs/about/faq.rst:336 +#: ../../docs/about/faq.rst:321 msgid "**Code maintenance and surface for bugs.** Every time we accept new code in the Godot repository, existing contributors often take the responsibility of maintaining it. Some contributors don't always stick around after getting their code merged, which can make it difficult for us to maintain the code in question. This can lead to poorly maintained features with bugs that are never fixed. On top of that, the \"API surface\" that needs to be tested and checked for regressions keeps increasing over time." msgstr "" -#: ../../docs/about/faq.rst:344 +#: ../../docs/about/faq.rst:329 msgid "**Ease of contribution.** By keeping the codebase small and tidy, it can remain fast and easy to compile from source. This makes it easier for new contributors to get started with Godot, without requiring them to purchase high-end hardware." msgstr "" -#: ../../docs/about/faq.rst:349 +#: ../../docs/about/faq.rst:334 msgid "**Keeping the binary size small for the editor.** Not everyone has a fast Internet connection. Ensuring that everyone can download the Godot editor, extract it and run it in less than 5 minutes makes Godot more accessible to developers in all countries." msgstr "" -#: ../../docs/about/faq.rst:354 +#: ../../docs/about/faq.rst:339 msgid "**Keeping the binary size small for export templates.** This directly impacts the size of projects exported with Godot. On mobile and web platforms, keeping file sizes low is important to ensure fast installation and loading on underpowered devices. Again, there are many countries where high-speed Internet is not readily available. To add to this, strict data usage caps are often in effect in those countries." msgstr "" -#: ../../docs/about/faq.rst:361 +#: ../../docs/about/faq.rst:346 msgid "For all the reasons above, we have to be selective of what we can accept as core functionality in Godot. This is why we are aiming to move some core functionality to officially supported add-ons in future versions of Godot. In terms of binary size, this also has the advantage of making you pay only for what you actually use in your project. (In the meantime, you can :ref:`compile custom export templates with unused features disabled ` to optimize the distribution size of your project.)" msgstr "" -#: ../../docs/about/faq.rst:370 +#: ../../docs/about/faq.rst:355 msgid "How should assets be created to handle multiple resolutions and aspect ratios?" msgstr "" -#: ../../docs/about/faq.rst:372 +#: ../../docs/about/faq.rst:357 msgid "This question pops up often and it's probably thanks to the misunderstanding created by Apple when they originally doubled the resolution of their devices. It made people think that having the same assets in different resolutions was a good idea, so many continued towards that path. That originally worked to a point and only for Apple devices, but then several Android and Apple devices with different resolutions and aspect ratios were created, with a very wide range of sizes and DPIs." msgstr "" -#: ../../docs/about/faq.rst:380 +#: ../../docs/about/faq.rst:365 msgid "The most common and proper way to achieve this is to, instead, use a single base resolution for the game and only handle different screen aspect ratios. This is mostly needed for 2D, as in 3D, it's just a matter of camera vertical or horizontal FOV." msgstr "" -#: ../../docs/about/faq.rst:385 +#: ../../docs/about/faq.rst:370 msgid "Choose a single base resolution for your game. Even if there are devices that go up to 1440p and devices that go down to 400p, regular hardware scaling in your device will take care of this at little or no performance cost. The most common choices are either near 1080p (1920x1080) or 720p (1280x720). Keep in mind the higher the resolution, the larger your assets, the more memory they will take and the longer the time it will take for loading." msgstr "" -#: ../../docs/about/faq.rst:393 +#: ../../docs/about/faq.rst:378 msgid "Use the stretch options in Godot; canvas items stretching while keeping aspect ratios works best. Check the :ref:`doc_multiple_resolutions` tutorial on how to achieve this." msgstr "" -#: ../../docs/about/faq.rst:397 +#: ../../docs/about/faq.rst:382 msgid "Determine a minimum resolution and then decide if you want your game to stretch vertically or horizontally for different aspect ratios, or if there is one aspect ratio and you want black bars to appear instead. This is also explained in :ref:`doc_multiple_resolutions`." msgstr "" -#: ../../docs/about/faq.rst:402 +#: ../../docs/about/faq.rst:387 msgid "For user interfaces, use the :ref:`anchoring ` to determine where controls should stay and move. If UIs are more complex, consider learning about Containers." msgstr "" -#: ../../docs/about/faq.rst:406 +#: ../../docs/about/faq.rst:391 msgid "And that's it! Your game should work in multiple resolutions." msgstr "" -#: ../../docs/about/faq.rst:409 +#: ../../docs/about/faq.rst:394 msgid "When is the next release of Godot out?" msgstr "" -#: ../../docs/about/faq.rst:411 +#: ../../docs/about/faq.rst:396 msgid "When it's ready! See :ref:`doc_release_policy_when_is_next_release_out` for more information." msgstr "" -#: ../../docs/about/faq.rst:415 +#: ../../docs/about/faq.rst:400 msgid "Which Godot version should I use for a new project?" msgstr "" -#: ../../docs/about/faq.rst:417 +#: ../../docs/about/faq.rst:402 msgid "We recommend using Godot 4.x for new projects, but depending on the feature set you need, it may be better to use 3.x instead. See :ref:`doc_release_policy_which_version_should_i_use` for more information." msgstr "" -#: ../../docs/about/faq.rst:422 +#: ../../docs/about/faq.rst:407 msgid "Should I upgrade my project to use new Godot versions?" msgstr "" -#: ../../docs/about/faq.rst:424 +#: ../../docs/about/faq.rst:409 msgid "Some new versions are safer to upgrade to than others. In general, whether you should upgrade depends on your project's circumstances. See :ref:`doc_release_policy_should_i_upgrade_my_project` for more information." msgstr "" -#: ../../docs/about/faq.rst:429 +#: ../../docs/about/faq.rst:414 msgid "Should I use the Forward+, Mobile, or Compatibility renderer?" msgstr "" -#: ../../docs/about/faq.rst:431 +#: ../../docs/about/faq.rst:416 msgid "You can find a detailed comparison of the renderers in :ref:`doc_renderers`." msgstr "" -#: ../../docs/about/faq.rst:434 +#: ../../docs/about/faq.rst:419 msgid "I would like to contribute! How can I get started?" msgstr "" -#: ../../docs/about/faq.rst:436 +#: ../../docs/about/faq.rst:421 msgid "Awesome! As an open source project, Godot thrives off of the innovation and the ambition of developers like you." msgstr "" -#: ../../docs/about/faq.rst:439 +#: ../../docs/about/faq.rst:424 msgid "The best way to start contributing to Godot is by using it and reporting any `issues `_ that you might experience. A good bug report with clear reproduction steps helps your fellow contributors fix bugs quickly and efficiently. You can also report issues you find in the `online documentation `_." msgstr "" -#: ../../docs/about/faq.rst:445 +#: ../../docs/about/faq.rst:430 msgid "If you feel ready to submit your first PR, pick any issue that resonates with you from one of the links above and try your hand at fixing it. You will need to learn how to compile the engine from sources, or how to build the documentation. You also need to get familiar with Git, a version control system that Godot developers use." msgstr "" -#: ../../docs/about/faq.rst:450 +#: ../../docs/about/faq.rst:435 msgid "We explain how to work with the engine source, how to edit the documentation, and what other ways to contribute are there in our `documentation for contributors `__." msgstr "" -#: ../../docs/about/faq.rst:454 +#: ../../docs/about/faq.rst:439 msgid "I have a great idea for Godot. How can I share it?" msgstr "" -#: ../../docs/about/faq.rst:456 +#: ../../docs/about/faq.rst:441 msgid "We are always looking for suggestions about how to improve the engine. User feedback is the main driving force behind our decision-making process, and limitations that you might face while working on your project are a great data point for us when considering engine enhancements." msgstr "" -#: ../../docs/about/faq.rst:461 +#: ../../docs/about/faq.rst:446 msgid "If you experience a usability problem or are missing a feature in the current version of Godot, start by discussing it with our `community `_. There may be other, perhaps better, ways to achieve the desired result that community members could suggest. And you can learn if other users experience the same issue, and figure out a good solution together." msgstr "" -#: ../../docs/about/faq.rst:467 +#: ../../docs/about/faq.rst:452 msgid "If you come up with a well-defined idea for the engine, feel free to open a `proposal issue `_. Try to be specific and concrete while describing your problem and your proposed solution — only actionable proposals can be considered. It is not required, but if you want to implement it yourself, that's always appreciated!" msgstr "" -#: ../../docs/about/faq.rst:473 +#: ../../docs/about/faq.rst:458 msgid "If you only have a general idea without specific details, you can open a `proposal discussion `_. These can be anything you want, and allow for a free-form discussion in search of a solution. Once you find one, a proposal issue can be opened." msgstr "" -#: ../../docs/about/faq.rst:478 +#: ../../docs/about/faq.rst:463 msgid "Please, read the `readme `_ document before creating a proposal to learn more about the process." msgstr "" -#: ../../docs/about/faq.rst:484 +#: ../../docs/about/faq.rst:469 msgid "Is it possible to use Godot to create non-game applications?" msgstr "" -#: ../../docs/about/faq.rst:486 +#: ../../docs/about/faq.rst:471 msgid "Yes! Godot features an extensive built-in UI system, and its small distribution size can make it a suitable alternative to frameworks like Electron or Qt." msgstr "" -#: ../../docs/about/faq.rst:489 +#: ../../docs/about/faq.rst:474 msgid "When creating a non-game application, make sure to enable :ref:`low-processor mode ` in the Project Settings to decrease CPU and GPU usage." msgstr "" -#: ../../docs/about/faq.rst:493 +#: ../../docs/about/faq.rst:478 msgid "Check out `Material Maker `__ and `Pixelorama `__ for examples of open source applications made with Godot." msgstr "" -#: ../../docs/about/faq.rst:500 +#: ../../docs/about/faq.rst:485 msgid "Is it possible to use Godot as a library?" msgstr "" -#: ../../docs/about/faq.rst:502 -msgid "Godot is meant to be used with its editor. We recommend you give it a try, as it will most likely save you time in the long term. There are no plans to make Godot usable as a library, as it would make the rest of the engine more convoluted and difficult to use for casual users." +#: ../../docs/about/faq.rst:487 +msgid "If you are looking to make a game with Godot, keep in mind Godot is designed to be used with its editor. We recommend you give it a try, as it will most likely save you time in the long term." msgstr "" -#: ../../docs/about/faq.rst:507 -msgid "If you want to use a rendering library, look into using an established rendering engine instead. Keep in mind rendering engines usually have smaller communities compared to Godot. This will make it more difficult to find answers to your questions." +#: ../../docs/about/faq.rst:491 +msgid "For more specialized applications, it can make sense to look into using Godot as a library. Since Godot 4.6, there is **experimental** support for using Godot as a static or shared library in the form of LibGodot. This is currently supported on Windows, macOS, and Linux. Support for Android and iOS is planned for a future release." msgstr "" -#: ../../docs/about/faq.rst:513 +#: ../../docs/about/faq.rst:497 +msgid "You can find sample applications that use Godot as a library in the `migeran/libgodot_project GitHub repository `__." +msgstr "" + +#: ../../docs/about/faq.rst:501 msgid "What user interface toolkit does Godot use?" msgstr "" -#: ../../docs/about/faq.rst:515 -msgid "Godot does not use a standard :abbr:`GUI (Graphical User Interface)` toolkit like GTK, Qt or wxWidgets. Instead, Godot uses its own user interface toolkit, rendered using OpenGL ES or Vulkan. This toolkit is exposed in the form of Control nodes, which are used to render the editor (which is written in C++). These Control nodes can also be used in projects from any scripting language supported by Godot." +#: ../../docs/about/faq.rst:503 +msgid "Godot does not use a standard :abbr:`GUI (Graphical User Interface)` toolkit like GTK, Qt or wxWidgets. Instead, Godot uses its own user interface toolkit, which is always rendered using hardware acceleration. There is no built-in software fallback, although external solutions that emulate graphics APIs on the CPU can be used." msgstr "" -#: ../../docs/about/faq.rst:522 +#: ../../docs/about/faq.rst:508 +msgid "This toolkit is exposed in the form of Control nodes, which are used to render the editor (which is written in C++). These Control nodes can also be used in projects from any scripting language supported by Godot." +msgstr "" + +#: ../../docs/about/faq.rst:512 msgid "This custom toolkit makes it possible to benefit from hardware acceleration and have a consistent appearance across all platforms. On top of that, it doesn't have to deal with the LGPL licensing caveats that come with GTK or Qt. Lastly, this means Godot is \"eating its own dog food\" since the editor itself is one of the most complex users of Godot's UI system." msgstr "" -#: ../../docs/about/faq.rst:528 -msgid "This custom UI toolkit :ref:`can't be used as a library `, but you can still :ref:`use Godot to create non-game applications by using the editor `." +#: ../../docs/about/faq.rst:518 +msgid "This custom UI toolkit can be :ref:`embedded into other applications ` (experimental). However, the preferred way to use it is to :ref:`use Godot to create non-game applications with the editor `." msgstr "" -#: ../../docs/about/faq.rst:535 +#: ../../docs/about/faq.rst:525 msgid "Why does Godot use the SCons build system?" msgstr "" -#: ../../docs/about/faq.rst:537 +#: ../../docs/about/faq.rst:527 msgid "Godot uses the `SCons `__ build system. There are no plans to switch to a different build system in the near future. There are many reasons why we have chosen SCons over other alternatives. For example:" msgstr "" -#: ../../docs/about/faq.rst:541 +#: ../../docs/about/faq.rst:531 msgid "Godot can be compiled for a dozen different platforms: all PC platforms, all mobile platforms, many consoles, and WebAssembly." msgstr "" -#: ../../docs/about/faq.rst:543 +#: ../../docs/about/faq.rst:533 msgid "Developers often need to compile for several of the platforms **at the same time**, or even different targets of the same platform. They can't afford reconfiguring and rebuilding the project each time. SCons can do this with no sweat, without breaking the builds." msgstr "" -#: ../../docs/about/faq.rst:547 +#: ../../docs/about/faq.rst:537 msgid "SCons will *never* break a build no matter how many changes, configurations, additions, removals etc." msgstr "" -#: ../../docs/about/faq.rst:549 +#: ../../docs/about/faq.rst:539 msgid "Godot's build process is not simple. Several files are generated by code (binders), others are parsed (shaders), and others need to offer customization (:ref:`modules `). This requires complex logic which is easier to write in an actual programming language (like Python) rather than using a mostly macro-based language only meant for building." msgstr "" -#: ../../docs/about/faq.rst:554 +#: ../../docs/about/faq.rst:544 msgid "Godot's build process makes heavy use of cross-compiling tools. Each platform has a specific detection process, and all these must be handled as specific cases with special code written for each." msgstr "" -#: ../../docs/about/faq.rst:558 +#: ../../docs/about/faq.rst:548 msgid "Please try to keep an open mind and get at least a little familiar with SCons if you are planning to build Godot yourself." msgstr "" -#: ../../docs/about/faq.rst:564 +#: ../../docs/about/faq.rst:554 msgid "Why does Godot not use STL (Standard Template Library)?" msgstr "" -#: ../../docs/about/faq.rst:566 +#: ../../docs/about/faq.rst:556 msgid "Like many other libraries (Qt as an example), Godot does not make use of STL (with a few exceptions such as threading primitives). We believe STL is a great general-purpose library, but we had special requirements for Godot." msgstr "" -#: ../../docs/about/faq.rst:570 +#: ../../docs/about/faq.rst:560 msgid "STL templates create very large symbols, which results in huge debug binaries. We use few templates with very short names instead." msgstr "" -#: ../../docs/about/faq.rst:572 +#: ../../docs/about/faq.rst:562 msgid "Most of our containers cater to special needs, like Vector, which uses copy on write and we use to pass data around, or the RID system, which requires O(1) access time for performance. Likewise, our hash map implementations are designed to integrate seamlessly with internal engine types." msgstr "" -#: ../../docs/about/faq.rst:576 +#: ../../docs/about/faq.rst:566 msgid "Our containers have memory tracking built-in, which helps better track memory usage." msgstr "" -#: ../../docs/about/faq.rst:577 +#: ../../docs/about/faq.rst:567 msgid "For large arrays, we use pooled memory, which can be mapped to either a preallocated buffer or virtual memory." msgstr "" -#: ../../docs/about/faq.rst:579 +#: ../../docs/about/faq.rst:569 msgid "We use our custom String type, as the one provided by STL is too basic and lacks proper internationalization support." msgstr "" -#: ../../docs/about/faq.rst:582 +#: ../../docs/about/faq.rst:572 msgid "Check out :ref:`Godot's container types ` for alternatives." msgstr "" -#: ../../docs/about/faq.rst:585 +#: ../../docs/about/faq.rst:575 msgid "Why does Godot not use exceptions?" msgstr "" -#: ../../docs/about/faq.rst:587 +#: ../../docs/about/faq.rst:577 msgid "We believe games should not crash, no matter what. If an unexpected situation happens, Godot will print an error (which can be traced even to script), but then it will try to recover as gracefully as possible and keep going." msgstr "" -#: ../../docs/about/faq.rst:592 +#: ../../docs/about/faq.rst:582 msgid "Additionally, exceptions significantly increase the binary size for the executable and result in increased compile times." msgstr "" -#: ../../docs/about/faq.rst:596 +#: ../../docs/about/faq.rst:586 msgid "Does Godot use an ECS (Entity Component System)?" msgstr "" -#: ../../docs/about/faq.rst:598 +#: ../../docs/about/faq.rst:588 msgid "Godot does **not** use an ECS and relies on inheritance instead. While there is no universally better approach, we found that using an inheritance-based approach resulted in better usability while still being fast enough for most use cases." msgstr "" -#: ../../docs/about/faq.rst:602 +#: ../../docs/about/faq.rst:592 msgid "That said, nothing prevents you from making use of composition in your project by creating child Nodes with individual scripts. These nodes can then be added and removed at runtime to dynamically add and remove behaviors." msgstr "" -#: ../../docs/about/faq.rst:606 +#: ../../docs/about/faq.rst:596 msgid "More information about Godot's design choices can be found in `this article `__." msgstr "" -#: ../../docs/about/faq.rst:610 +#: ../../docs/about/faq.rst:600 msgid "Why does Godot not force users to implement DOD (Data-Oriented Design)?" msgstr "" -#: ../../docs/about/faq.rst:612 +#: ../../docs/about/faq.rst:602 msgid "While Godot internally attempts to use cache coherency as much as possible, we believe users don't need to be forced to use DOD practices." msgstr "" -#: ../../docs/about/faq.rst:615 +#: ../../docs/about/faq.rst:605 msgid "DOD is mostly a cache coherency optimization that can only provide significant performance improvements when dealing with dozens of thousands of objects which are processed every frame with little modification. That is, if you are moving a few hundred sprites or enemies per frame, DOD won't result in a meaningful improvement in performance. In such a case, you should consider a different approach to optimization." msgstr "" -#: ../../docs/about/faq.rst:622 +#: ../../docs/about/faq.rst:612 msgid "The vast majority of games do not need this and Godot provides handy helpers to do the job for most cases when you do." msgstr "" -#: ../../docs/about/faq.rst:625 +#: ../../docs/about/faq.rst:615 msgid "If a game needs to process such a large amount of objects, our recommendation is to use C++ and GDExtensions for performance-heavy tasks and GDScript (or C#) for the rest of the game." msgstr "" -#: ../../docs/about/faq.rst:630 +#: ../../docs/about/faq.rst:620 msgid "How can I support Godot development or contribute?" msgstr "" -#: ../../docs/about/faq.rst:632 +#: ../../docs/about/faq.rst:622 msgid "See `How to contribute `__." msgstr "" -#: ../../docs/about/faq.rst:635 +#: ../../docs/about/faq.rst:625 msgid "Who is working on Godot? How can I contact you?" msgstr "" -#: ../../docs/about/faq.rst:637 +#: ../../docs/about/faq.rst:627 msgid "See the corresponding page on the `Godot website `_." msgstr "" diff --git a/sphinx/templates/about/introduction.pot b/sphinx/templates/about/introduction.pot index c59b708b35..9528ebbe98 100644 --- a/sphinx/templates/about/introduction.pot +++ b/sphinx/templates/about/introduction.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/about/list_of_features.pot b/sphinx/templates/about/list_of_features.pot index f36f2739ae..79a55eb738 100644 --- a/sphinx/templates/about/list_of_features.pot +++ b/sphinx/templates/about/list_of_features.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/about/release_policy.pot b/sphinx/templates/about/release_policy.pot index b3a90c0fa1..6f1d7cfe48 100644 --- a/sphinx/templates/about/release_policy.pot +++ b/sphinx/templates/about/release_policy.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -96,373 +96,391 @@ msgid "**Support level**" msgstr "" #: ../../docs/about/release_policy.rst:87 -msgid "Godot 4.5 (`master`)" +msgid "Godot 4.6 (`master`)" msgstr "" #: ../../docs/about/release_policy.rst:87 -msgid "Q3 2025 (estimate)" +msgid "Q1 2026 (estimate)" msgstr "" #: ../../docs/about/release_policy.rst:87 msgid "|unstable| *Development.* Receives new features, usability and performance improvements, as well as bug fixes, while under development." msgstr "" -#: ../../docs/about/release_policy.rst:132 +#: ../../docs/about/release_policy.rst:133 msgid "unstable" msgstr "" #: ../../docs/about/release_policy.rst:90 -msgid "Godot 4.4" +msgid "Godot 4.5" msgstr "" #: ../../docs/about/release_policy.rst:90 -msgid "March 2025" +msgid "September 2025" msgstr "" #: ../../docs/about/release_policy.rst:90 -#: ../../docs/about/release_policy.rst:93 -#: ../../docs/about/release_policy.rst:105 +#: ../../docs/about/release_policy.rst:106 msgid "|supported| Receives fixes for bugs and security issues, as well as patches that enable platform support." msgstr "" -#: ../../docs/about/release_policy.rst:129 +#: ../../docs/about/release_policy.rst:130 msgid "supported" msgstr "" #: ../../docs/about/release_policy.rst:93 -msgid "Godot 4.3" +msgid "Godot 4.4" msgstr "" #: ../../docs/about/release_policy.rst:93 -msgid "August 2024" +msgid "March 2025" msgstr "" -#: ../../docs/about/release_policy.rst:96 -msgid "Godot 4.2" -msgstr "" - -#: ../../docs/about/release_policy.rst:96 -msgid "November 2023" -msgstr "" - -#: ../../docs/about/release_policy.rst:96 -#: ../../docs/about/release_policy.rst:108 +#: ../../docs/about/release_policy.rst:93 msgid "|partial| Receives fixes for security and platform support issues only." msgstr "" -#: ../../docs/about/release_policy.rst:130 +#: ../../docs/about/release_policy.rst:131 msgid "partial" msgstr "" -#: ../../docs/about/release_policy.rst:98 -msgid "Godot 4.1" +#: ../../docs/about/release_policy.rst:95 +msgid "Godot 4.3" msgstr "" -#: ../../docs/about/release_policy.rst:98 -msgid "July 2023" +#: ../../docs/about/release_policy.rst:95 +msgid "August 2024" msgstr "" -#: ../../docs/about/release_policy.rst:98 -msgid "|eol| No longer supported (last update: 4.1.4)." +#: ../../docs/about/release_policy.rst:95 +msgid "|eol| No longer supported (last update: 4.3)." msgstr "" -#: ../../docs/about/release_policy.rst:131 +#: ../../docs/about/release_policy.rst:132 msgid "eol" msgstr "" -#: ../../docs/about/release_policy.rst:100 +#: ../../docs/about/release_policy.rst:97 +msgid "Godot 4.2" +msgstr "" + +#: ../../docs/about/release_policy.rst:97 +msgid "November 2023" +msgstr "" + +#: ../../docs/about/release_policy.rst:97 +msgid "|eol| No longer supported (last update: 4.2.2)." +msgstr "" + +#: ../../docs/about/release_policy.rst:99 +msgid "Godot 4.1" +msgstr "" + +#: ../../docs/about/release_policy.rst:99 +msgid "July 2023" +msgstr "" + +#: ../../docs/about/release_policy.rst:99 +msgid "|eol| No longer supported (last update: 4.1.4)." +msgstr "" + +#: ../../docs/about/release_policy.rst:101 msgid "Godot 4.0" msgstr "" -#: ../../docs/about/release_policy.rst:100 +#: ../../docs/about/release_policy.rst:101 msgid "March 2023" msgstr "" -#: ../../docs/about/release_policy.rst:100 +#: ../../docs/about/release_policy.rst:101 msgid "|eol| No longer supported (last update: 4.0.4)." msgstr "" -#: ../../docs/about/release_policy.rst:102 +#: ../../docs/about/release_policy.rst:103 msgid "Godot 3.7 (`3.x`)" msgstr "" -#: ../../docs/about/release_policy.rst:102 +#: ../../docs/about/release_policy.rst:103 msgid "No ETA for now" msgstr "" -#: ../../docs/about/release_policy.rst:102 +#: ../../docs/about/release_policy.rst:103 msgid "|supported| *Beta.* Receives new features, usability and performance improvements, as well as bug fixes, while under development." msgstr "" -#: ../../docs/about/release_policy.rst:105 +#: ../../docs/about/release_policy.rst:106 msgid "Godot 3.6" msgstr "" -#: ../../docs/about/release_policy.rst:105 +#: ../../docs/about/release_policy.rst:106 msgid "September 2024" msgstr "" -#: ../../docs/about/release_policy.rst:108 +#: ../../docs/about/release_policy.rst:109 msgid "Godot 3.5" msgstr "" -#: ../../docs/about/release_policy.rst:108 +#: ../../docs/about/release_policy.rst:109 msgid "August 2022" msgstr "" -#: ../../docs/about/release_policy.rst:110 +#: ../../docs/about/release_policy.rst:109 +msgid "|eol| No longer supported (last update: 3.5.3)." +msgstr "" + +#: ../../docs/about/release_policy.rst:111 msgid "Godot 3.4" msgstr "" -#: ../../docs/about/release_policy.rst:110 +#: ../../docs/about/release_policy.rst:111 msgid "November 2021" msgstr "" -#: ../../docs/about/release_policy.rst:110 +#: ../../docs/about/release_policy.rst:111 msgid "|eol| No longer supported (last update: 3.4.5)." msgstr "" -#: ../../docs/about/release_policy.rst:112 +#: ../../docs/about/release_policy.rst:113 msgid "Godot 3.3" msgstr "" -#: ../../docs/about/release_policy.rst:112 +#: ../../docs/about/release_policy.rst:113 msgid "April 2021" msgstr "" -#: ../../docs/about/release_policy.rst:112 +#: ../../docs/about/release_policy.rst:113 msgid "|eol| No longer supported (last update: 3.3.4)." msgstr "" -#: ../../docs/about/release_policy.rst:114 +#: ../../docs/about/release_policy.rst:115 msgid "Godot 3.2" msgstr "" -#: ../../docs/about/release_policy.rst:114 +#: ../../docs/about/release_policy.rst:115 msgid "January 2020" msgstr "" -#: ../../docs/about/release_policy.rst:114 +#: ../../docs/about/release_policy.rst:115 msgid "|eol| No longer supported (last update: 3.2.3)." msgstr "" -#: ../../docs/about/release_policy.rst:116 +#: ../../docs/about/release_policy.rst:117 msgid "Godot 3.1" msgstr "" -#: ../../docs/about/release_policy.rst:116 +#: ../../docs/about/release_policy.rst:117 msgid "March 2019" msgstr "" -#: ../../docs/about/release_policy.rst:116 +#: ../../docs/about/release_policy.rst:117 msgid "|eol| No longer supported (last update: 3.1.2)." msgstr "" -#: ../../docs/about/release_policy.rst:118 +#: ../../docs/about/release_policy.rst:119 msgid "Godot 3.0" msgstr "" -#: ../../docs/about/release_policy.rst:118 +#: ../../docs/about/release_policy.rst:119 msgid "January 2018" msgstr "" -#: ../../docs/about/release_policy.rst:118 +#: ../../docs/about/release_policy.rst:119 msgid "|eol| No longer supported (last update: 3.0.6)." msgstr "" -#: ../../docs/about/release_policy.rst:120 +#: ../../docs/about/release_policy.rst:121 msgid "Godot 2.1" msgstr "" -#: ../../docs/about/release_policy.rst:120 +#: ../../docs/about/release_policy.rst:121 msgid "July 2016" msgstr "" -#: ../../docs/about/release_policy.rst:120 +#: ../../docs/about/release_policy.rst:121 msgid "|eol| No longer supported (last update: 2.1.6)." msgstr "" -#: ../../docs/about/release_policy.rst:122 +#: ../../docs/about/release_policy.rst:123 msgid "Godot 2.0" msgstr "" -#: ../../docs/about/release_policy.rst:122 +#: ../../docs/about/release_policy.rst:123 msgid "February 2016" msgstr "" -#: ../../docs/about/release_policy.rst:122 +#: ../../docs/about/release_policy.rst:123 msgid "|eol| No longer supported (last update: 2.0.4.1)." msgstr "" -#: ../../docs/about/release_policy.rst:124 +#: ../../docs/about/release_policy.rst:125 msgid "Godot 1.1" msgstr "" -#: ../../docs/about/release_policy.rst:124 +#: ../../docs/about/release_policy.rst:125 msgid "May 2015" msgstr "" -#: ../../docs/about/release_policy.rst:124 -#: ../../docs/about/release_policy.rst:126 +#: ../../docs/about/release_policy.rst:125 +#: ../../docs/about/release_policy.rst:127 msgid "|eol| No longer supported." msgstr "" -#: ../../docs/about/release_policy.rst:126 +#: ../../docs/about/release_policy.rst:127 msgid "Godot 1.0" msgstr "" -#: ../../docs/about/release_policy.rst:126 +#: ../../docs/about/release_policy.rst:127 msgid "December 2014" msgstr "" -#: ../../docs/about/release_policy.rst:134 +#: ../../docs/about/release_policy.rst:135 msgid "**Legend:** |supported| Full support – |partial| Partial support – |eol| No support (end of life) – |unstable| Development version" msgstr "" -#: ../../docs/about/release_policy.rst:140 +#: ../../docs/about/release_policy.rst:141 msgid "Pre-release Godot versions aren't intended to be used in production and are provided for testing purposes only." msgstr "" -#: ../../docs/about/release_policy.rst:145 +#: ../../docs/about/release_policy.rst:146 msgid "See :ref:`doc_upgrading_to_godot_4` for instructions on migrating a project from Godot 3.x to 4.x." msgstr "" -#: ../../docs/about/release_policy.rst:151 +#: ../../docs/about/release_policy.rst:152 msgid "Which version should I use for a new project?" msgstr "" -#: ../../docs/about/release_policy.rst:153 +#: ../../docs/about/release_policy.rst:154 msgid "We recommend using Godot 4.x for new projects, as the Godot 4.x series will be supported long after 3.x stops receiving updates in the future. One caveat is that a lot of third-party documentation hasn't been updated for Godot 4.x yet. If you have to follow a tutorial designed for Godot 3.x, we recommend keeping :ref:`doc_upgrading_to_godot_4` open in a separate tab to check which methods have been renamed (if you get a script error while trying to use a specific node or method that was renamed in Godot 4.x)." msgstr "" -#: ../../docs/about/release_policy.rst:161 +#: ../../docs/about/release_policy.rst:162 msgid "If your project requires a feature that is missing in 4.x (such as GLES2/WebGL 1.0), you should use Godot 3.x for a new project instead." msgstr "" -#: ../../docs/about/release_policy.rst:167 +#: ../../docs/about/release_policy.rst:168 msgid "Should I upgrade my project to use new engine versions?" msgstr "" -#: ../../docs/about/release_policy.rst:171 +#: ../../docs/about/release_policy.rst:172 msgid "Upgrading software while working on a project is inherently risky, so consider whether it's a good idea for your project before attempting an upgrade. Also, make backups of your project or use version control to prevent losing data in case the upgrade goes wrong." msgstr "" -#: ../../docs/about/release_policy.rst:176 +#: ../../docs/about/release_policy.rst:177 msgid "That said, we do our best to keep minor and especially patch releases compatible with existing projects." msgstr "" -#: ../../docs/about/release_policy.rst:179 +#: ../../docs/about/release_policy.rst:180 msgid "The general recommendation is to upgrade your project to follow new *patch* releases, such as upgrading from 4.0.2 to 4.0.3. This ensures you get bug fixes, security updates and platform support updates (which is especially important for mobile platforms). You also get continued support, as only the last patch release receives support on official community platforms." msgstr "" -#: ../../docs/about/release_policy.rst:185 +#: ../../docs/about/release_policy.rst:186 msgid "For *minor* releases, you should determine whether it's a good idea to upgrade on a case-by-case basis. We've made a lot of effort in making the upgrade process as seamless as possible, but some breaking changes may be present in minor releases, along with a greater risk of regressions. Some fixes included in minor releases may also change a class' expected behavior as required to fix some bugs. This is especially the case in classes marked as *experimental* in the documentation." msgstr "" -#: ../../docs/about/release_policy.rst:193 +#: ../../docs/about/release_policy.rst:194 msgid "*Major* releases bring a lot of new functionality, but they also remove previously existing functionality and may raise hardware requirements. They also require much more work to upgrade to compared to minor releases. As a result, we recommend sticking with the major release you've started your project with if you are happy with how your project currently works. For example, if your project was started with 3.5, we recommend upgrading to 3.5.2 and possibly 3.6 in the future, but not to 4.0+, unless your project really needs the new features that come with 4.0+." msgstr "" -#: ../../docs/about/release_policy.rst:205 +#: ../../docs/about/release_policy.rst:206 msgid "When is the next release out?" msgstr "" -#: ../../docs/about/release_policy.rst:209 +#: ../../docs/about/release_policy.rst:210 msgid "While Godot contributors aren't working under any deadlines, we strive to publish minor releases relatively frequently." msgstr "" -#: ../../docs/about/release_policy.rst:212 +#: ../../docs/about/release_policy.rst:213 msgid "In particular, after the very long release cycle for 4.0, we are pivoting to a faster-paced development workflow, 4.1 released 4 months after 4.0, and 4.2 released 4 months after 4.1." msgstr "" -#: ../../docs/about/release_policy.rst:216 +#: ../../docs/about/release_policy.rst:217 msgid "Frequent minor releases will enable us to ship new features faster (possibly as experimental), get user feedback quickly, and iterate to improve those features and their usability. Likewise, the general user experience will be improved more steadily with a faster path to the end users." msgstr "" -#: ../../docs/about/release_policy.rst:221 +#: ../../docs/about/release_policy.rst:222 msgid "Maintenance (patch) releases are released as needed with potentially very short development cycles, to provide users of the current stable branch with the latest bug fixes for their production needs." msgstr "" -#: ../../docs/about/release_policy.rst:225 +#: ../../docs/about/release_policy.rst:226 msgid "There is currently no planned release date for the next 3.x minor version, 3.7. The current stable release, 3.6, may be the last stable branch of Godot 3.x. Godot 3.x is supported on a best-effort basis, as long as contributors continue to maintain it." msgstr "" -#: ../../docs/about/release_policy.rst:231 +#: ../../docs/about/release_policy.rst:232 msgid "What are the criteria for compatibility across engine versions?" msgstr "" -#: ../../docs/about/release_policy.rst:235 +#: ../../docs/about/release_policy.rst:236 msgid "This section is intended to be used by contributors to determine which changes are safe for a given release. The list is not exhaustive; it only outlines the most common situations encountered during Godot's development." msgstr "" -#: ../../docs/about/release_policy.rst:239 +#: ../../docs/about/release_policy.rst:240 msgid "The following changes are acceptable in patch releases:" msgstr "" -#: ../../docs/about/release_policy.rst:241 +#: ../../docs/about/release_policy.rst:242 msgid "Fixing a bug in a way that has no major negative impact on most projects, such as a visual or physics bug. Godot's physics engine is not deterministic, so physics bug fixes are not considered to break compatibility. If fixing a bug has a negative impact that could impact a lot of projects, it should be made optional (e.g. using a project setting or separate method)." msgstr "" -#: ../../docs/about/release_policy.rst:246 +#: ../../docs/about/release_policy.rst:247 msgid "Adding a new optional parameter to a method." msgstr "" -#: ../../docs/about/release_policy.rst:247 +#: ../../docs/about/release_policy.rst:248 msgid "Small-scale editor usability tweaks." msgstr "" -#: ../../docs/about/release_policy.rst:249 +#: ../../docs/about/release_policy.rst:250 msgid "Note that we tend to be more conservative with the fixes we allow in each subsequent patch release. For instance, 4.0.1 may receive more impactful fixes than 4.0.4 would." msgstr "" -#: ../../docs/about/release_policy.rst:253 +#: ../../docs/about/release_policy.rst:254 msgid "The following changes are acceptable in minor releases, but not patch releases:" msgstr "" -#: ../../docs/about/release_policy.rst:255 +#: ../../docs/about/release_policy.rst:256 msgid "Significant new features." msgstr "" -#: ../../docs/about/release_policy.rst:256 +#: ../../docs/about/release_policy.rst:257 msgid "Renaming a method parameter. In C#, method parameters can be passed by name (but not in GDScript). As a result, this can break some projects that use C#." msgstr "" -#: ../../docs/about/release_policy.rst:258 +#: ../../docs/about/release_policy.rst:259 msgid "Deprecating a method, member variable, or class. This is done by adding a deprecated flag to its class reference, which will show up in the editor. When a method is marked as deprecated, it's slated to be removed in the next *major* release." msgstr "" -#: ../../docs/about/release_policy.rst:262 +#: ../../docs/about/release_policy.rst:263 msgid "Changes that affect the default project theme's visuals." msgstr "" -#: ../../docs/about/release_policy.rst:263 +#: ../../docs/about/release_policy.rst:264 msgid "Bug fixes which significantly change the behavior or the output, with the aim to meet user expectations better. In comparison, in patch releases, we may favor keeping a buggy behavior so we don't break existing projects which likely already rely on the bug or use a workaround." msgstr "" -#: ../../docs/about/release_policy.rst:267 +#: ../../docs/about/release_policy.rst:268 msgid "Performance optimizations that result in visual changes." msgstr "" -#: ../../docs/about/release_policy.rst:269 +#: ../../docs/about/release_policy.rst:270 msgid "The following changes are considered **compatibility-breaking** and can only be performed in a new major release:" msgstr "" -#: ../../docs/about/release_policy.rst:272 +#: ../../docs/about/release_policy.rst:273 msgid "Renaming or removing a method, member variable, or class." msgstr "" -#: ../../docs/about/release_policy.rst:273 +#: ../../docs/about/release_policy.rst:274 msgid "Modifying a node's inheritance tree by making it inherit from a different class." msgstr "" -#: ../../docs/about/release_policy.rst:274 +#: ../../docs/about/release_policy.rst:275 msgid "Changing the default value of a project setting value in a way that affects existing projects. To only affect new projects, the project manager should write a modified ``project.godot`` instead." msgstr "" -#: ../../docs/about/release_policy.rst:278 +#: ../../docs/about/release_policy.rst:279 msgid "Since Godot 5.0 hasn't been branched off yet, we currently discourage making compatibility-breaking changes of this kind." msgstr "" -#: ../../docs/about/release_policy.rst:283 +#: ../../docs/about/release_policy.rst:284 msgid "When modifying a method's signature in any fashion (including adding an optional parameter), a GDExtension compatibility method must be created. This ensures that existing GDExtensions continue to work across patch and minor releases, so that users don't have to recompile them. See :ref:`doc_handling_compatibility_breakages` for more information." msgstr "" diff --git a/sphinx/templates/about/system_requirements.pot b/sphinx/templates/about/system_requirements.pot index 034e2f5d34..572c526dea 100644 --- a/sphinx/templates/about/system_requirements.pot +++ b/sphinx/templates/about/system_requirements.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -430,7 +430,7 @@ msgstr "" #: ../../docs/about/system_requirements.rst:268 #: ../../docs/about/system_requirements.rst:274 -msgid "*Example (Metal): Apple A11 (iPhone 8/X)*" +msgid "*Example (Metal): Apple A12 (iPhone XR/XS)*" msgstr "" #: ../../docs/about/system_requirements.rst:270 diff --git a/sphinx/templates/community/asset_library/index.pot b/sphinx/templates/community/asset_library/index.pot index ea142fa522..734b324b8d 100644 --- a/sphinx/templates/community/asset_library/index.pot +++ b/sphinx/templates/community/asset_library/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/community/asset_library/submitting_to_assetlib.pot b/sphinx/templates/community/asset_library/submitting_to_assetlib.pot index 8bae24f1fe..9d865adafa 100644 --- a/sphinx/templates/community/asset_library/submitting_to_assetlib.pot +++ b/sphinx/templates/community/asset_library/submitting_to_assetlib.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/community/asset_library/using_assetlib.pot b/sphinx/templates/community/asset_library/using_assetlib.pot index 07934ed6ed..3283a2dbf2 100644 --- a/sphinx/templates/community/asset_library/using_assetlib.pot +++ b/sphinx/templates/community/asset_library/using_assetlib.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/community/asset_library/what_is_assetlib.pot b/sphinx/templates/community/asset_library/what_is_assetlib.pot index 76cd58661c..da13b4e319 100644 --- a/sphinx/templates/community/asset_library/what_is_assetlib.pot +++ b/sphinx/templates/community/asset_library/what_is_assetlib.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/community/channels.pot b/sphinx/templates/community/channels.pot index f04f906dcc..61706c16a0 100644 --- a/sphinx/templates/community/channels.pot +++ b/sphinx/templates/community/channels.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/community/tutorials.pot b/sphinx/templates/community/tutorials.pot index 6b83c80a0a..77cbfb107e 100644 --- a/sphinx/templates/community/tutorials.pot +++ b/sphinx/templates/community/tutorials.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -36,7 +36,7 @@ msgid "The Godot video tutorials by `GDQuest `_ or `in the browser `_." +msgid "GDQuest's *Learn GDScript From Zero* is a free and open source interactive tutorial for absolute beginners to learn to program with Godot's GDScript language. It is available as a `desktop application `__ or `in the browser `__." msgstr "" #: ../../docs/community/tutorials.rst:20 diff --git a/sphinx/templates/engine_details/architecture/2d_coordinate_systems.pot b/sphinx/templates/engine_details/architecture/2d_coordinate_systems.pot index 1e6b96f71d..31a57cfdc5 100644 --- a/sphinx/templates/engine_details/architecture/2d_coordinate_systems.pot +++ b/sphinx/templates/engine_details/architecture/2d_coordinate_systems.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/architecture/binding_to_external_libraries.pot b/sphinx/templates/engine_details/architecture/binding_to_external_libraries.pot index 2949e7d38a..123f3bb611 100644 --- a/sphinx/templates/engine_details/architecture/binding_to_external_libraries.pot +++ b/sphinx/templates/engine_details/architecture/binding_to_external_libraries.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/architecture/common_engine_methods_and_macros.pot b/sphinx/templates/engine_details/architecture/common_engine_methods_and_macros.pot index d9b0e01532..f837e66de2 100644 --- a/sphinx/templates/engine_details/architecture/common_engine_methods_and_macros.pot +++ b/sphinx/templates/engine_details/architecture/common_engine_methods_and_macros.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/architecture/core_types.pot b/sphinx/templates/engine_details/architecture/core_types.pot index 1439edce1a..98c55ac66b 100644 --- a/sphinx/templates/engine_details/architecture/core_types.pot +++ b/sphinx/templates/engine_details/architecture/core_types.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -28,361 +28,438 @@ msgid "This reference will try to list them in order for their better understand msgstr "" #: ../../docs/engine_details/architecture/core_types.rst:13 -msgid "Definitions" -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:15 -msgid "Godot uses the standard C99 datatypes, such as ``uint8_t``, ``uint32_t``, ``int64_t``, etc. which are nowadays supported by every compiler. Reinventing the wheel for those is not fun, as it makes code more difficult to read." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:20 -msgid "In general, care is not taken to use the most efficient datatype for a given task unless using large structures or arrays. ``int`` is used through most of the code unless necessary. This is done because nowadays every device has at least a 32-bit bus and can do such operations in one cycle. It makes code more readable too." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:26 -msgid "For files or memory sizes, ``size_t`` is used, which is guaranteed to be 64-bit." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:29 -msgid "For Unicode characters, CharType instead of wchar_t is used, because many architectures have 4 bytes long wchar_t, where 2 bytes might be desired. However, by default, this has not been forced and CharType maps directly to wchar_t." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:34 -msgid "`core/typedefs.h `__" -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:37 -msgid "Memory model" -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:39 -msgid "PC is a wonderful architecture. Computers often have gigabytes of RAM, terabytes of storage and gigahertz of CPU, and when an application needs more resources the OS will swap out the inactive ones. Other architectures (like mobile or consoles) are in general more limited." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:44 -msgid "The most common memory model is the heap, where an application will request a region of memory, and the underlying OS will try to fit it somewhere and return it. This often works best and is flexible, but over time and with abuse, this can lead to segmentation." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:49 -msgid "Segmentation slowly creates holes that are too small for most common allocations, so that memory is wasted. There is a lot of literature about heap and segmentation, so this topic will not be developed further here. Modern operating systems use paged memory, which helps mitigate the problem of segmentation but doesn't solve it." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:55 -msgid "However, in many studies and tests, it is shown that given enough memory, if the maximum allocation size is below a given threshold in proportion to the maximum heap size and proportion of memory intended to be unused, segmentation will not be a problem over time as it will remain constant. In other words, leave 10-20% of your memory free and perform all small allocations and you are fine." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:62 -msgid "Godot ensures that all objects that can be allocated dynamically are small (less than a few kB at most). But what happens if an allocation is too large (like an image or mesh geometry or large array)? In this case Godot has the option to use a dynamic memory pool. This memory needs to be locked to be accessed, and if an allocation runs out of memory, the pool will be rearranged and compacted on demand. Depending on the need of the game, the programmer can configure the dynamic memory pool size." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:71 msgid "Allocating memory" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:73 -msgid "Godot has many tools for tracking memory usage in a game, especially during debug. Because of this, the regular C and C++ library calls should not be used. Instead, a few other ones are provided." +#: ../../docs/engine_details/architecture/core_types.rst:15 +msgid "Godot has many tricks for ensuring memory safety and tracking memory usage. Because of this, the regular C and C++ library calls should not be used. Instead, a few replacements are provided." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:77 +#: ../../docs/engine_details/architecture/core_types.rst:19 msgid "For C-style allocation, Godot provides a few macros:" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:85 +#: ../../docs/engine_details/architecture/core_types.rst:27 msgid "These are equivalent to the usual ``malloc()``, ``realloc()``, and ``free()`` of the C standard library." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:88 +#: ../../docs/engine_details/architecture/core_types.rst:30 msgid "For C++-style allocation, special macros are provided:" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:98 +#: ../../docs/engine_details/architecture/core_types.rst:41 msgid "These are equivalent to ``new``, ``delete``, ``new[]``, and ``delete[]`` respectively." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:101 -msgid "memnew/memdelete also use a little C++ magic and notify Objects right after they are created, and right before they are deleted." +#: ../../docs/engine_details/architecture/core_types.rst:44 +msgid "``memnew``/``memdelete`` also use a little C++ magic to automatically call post-init and pre-release functions. For example, this is used to notify Objects right after they are created, and right before they are deleted." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:104 -msgid "For dynamic memory, use one of Godot's sequence types such as ``Vector<>`` or ``LocalVector<>``. ``Vector<>`` behaves much like an STL ``std::vector<>``, but is simpler and uses Copy-On-Write (CoW) semantics. CoW copies of ``Vector<>`` can safely access the same data from different threads, but several threads cannot access the same ``Vector<>`` instance safely. It can be safely passed via public API if it has a ``Packed`` alias." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:111 -msgid "The ``Packed*Array`` :ref:`types ` are aliases for specific ``Vector<*>`` types (e.g., ``PackedByteArray``, ``PackedInt32Array``) that are accessible via GDScript. Outside of core, prefer using the ``Packed*Array`` aliases for functions exposed to scripts, and ``Vector<>`` for other occasions." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:117 -msgid "``LocalVector<>`` is much more like ``std::vector`` than ``Vector<>``. It is non-CoW, with less overhead. It is intended for internal use where the benefits of CoW are not needed. Note that neither ``LocalVector<>`` nor ``Vector<>`` are drop-in replacements for each other. They are two unrelated types with similar interfaces, both using a buffer as their storage strategy." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:124 -msgid "``List<>`` is another Godot sequence type, using a doubly-linked list as its storage strategy. Prefer ``Vector<>`` (or ``LocalVector<>``) over ``List<>`` unless you're sure you need it, as cache locality and memory fragmentation tend to be more important with small collections." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:129 +#: ../../docs/engine_details/architecture/core_types.rst:48 msgid "`core/os/memory.h `__" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:132 +#: ../../docs/engine_details/architecture/core_types.rst:51 msgid "Containers" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:134 +#: ../../docs/engine_details/architecture/core_types.rst:53 msgid "Godot provides its own set of containers, which means STL containers like ``std::string`` and ``std::vector`` are generally not used in the codebase. See :ref:`doc_faq_why_not_stl` for more information." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:137 +#: ../../docs/engine_details/architecture/core_types.rst:56 msgid "A 📜 icon denotes the type is part of :ref:`Variant `. This means it can be used as a parameter or return value of a method exposed to the scripting API." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:142 +#: ../../docs/engine_details/architecture/core_types.rst:61 +#: ../../docs/engine_details/architecture/core_types.rst:185 msgid "Godot datatype" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:142 +#: ../../docs/engine_details/architecture/core_types.rst:61 +#: ../../docs/engine_details/architecture/core_types.rst:185 msgid "Closest C++ STL datatype" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:142 +#: ../../docs/engine_details/architecture/core_types.rst:61 +#: ../../docs/engine_details/architecture/core_types.rst:185 msgid "Comment" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:144 +#: ../../docs/engine_details/architecture/core_types.rst:63 msgid "|string| 📜" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:144 -#: ../../docs/engine_details/architecture/core_types.rst:157 +#: ../../docs/engine_details/architecture/core_types.rst:63 +#: ../../docs/engine_details/architecture/core_types.rst:76 msgid "``std::string``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:144 +#: ../../docs/engine_details/architecture/core_types.rst:63 msgid "**Use this as the \"default\" string type.** ``String`` uses UTF-32 encoding to simplify processing thanks to its fixed character size." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:147 +#: ../../docs/engine_details/architecture/core_types.rst:66 msgid "|vector|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:147 -#: ../../docs/engine_details/architecture/core_types.rst:160 -#: ../../docs/engine_details/architecture/core_types.rst:164 -#: ../../docs/engine_details/architecture/core_types.rst:168 -#: ../../docs/engine_details/architecture/core_types.rst:171 +#: ../../docs/engine_details/architecture/core_types.rst:66 +#: ../../docs/engine_details/architecture/core_types.rst:79 +#: ../../docs/engine_details/architecture/core_types.rst:83 +#: ../../docs/engine_details/architecture/core_types.rst:87 +#: ../../docs/engine_details/architecture/core_types.rst:90 msgid "``std::vector``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:147 +#: ../../docs/engine_details/architecture/core_types.rst:66 msgid "**Use this as the \"default\" vector type.** Uses copy-on-write (COW) semantics. This means it's generally slower but can be copied around almost for free. Use ``LocalVector`` instead where COW isn't needed and performance matters." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:151 +#: ../../docs/engine_details/architecture/core_types.rst:70 msgid "|hash_set|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:151 +#: ../../docs/engine_details/architecture/core_types.rst:70 msgid "``std::unordered_set``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:151 +#: ../../docs/engine_details/architecture/core_types.rst:70 msgid "**Use this as the \"default\" set type.**" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:153 +#: ../../docs/engine_details/architecture/core_types.rst:72 msgid "|a_hash_map|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:153 -#: ../../docs/engine_details/architecture/core_types.rst:195 -#: ../../docs/engine_details/architecture/core_types.rst:204 -#: ../../docs/engine_details/architecture/core_types.rst:208 +#: ../../docs/engine_details/architecture/core_types.rst:72 +#: ../../docs/engine_details/architecture/core_types.rst:114 +#: ../../docs/engine_details/architecture/core_types.rst:123 +#: ../../docs/engine_details/architecture/core_types.rst:127 msgid "``std::unordered_map``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:153 +#: ../../docs/engine_details/architecture/core_types.rst:72 msgid "**Use this as the \"default\" map type.** Does not preserve insertion order. Note that pointers into the map, as well as iterators, are not stable under mutations. If either of these affordances are needed, use ``HashMap`` instead." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:157 +#: ../../docs/engine_details/architecture/core_types.rst:76 msgid "|string_name| 📜" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:157 +#: ../../docs/engine_details/architecture/core_types.rst:76 msgid "Uses string interning for fast comparisons. Use this for static strings that are referenced frequently and used in multiple locations in the engine." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:160 +#: ../../docs/engine_details/architecture/core_types.rst:79 msgid "|local_vector|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:160 +#: ../../docs/engine_details/architecture/core_types.rst:79 msgid "Closer to ``std::vector`` in semantics, doesn't use copy-on-write (COW) thus it's faster than ``Vector``. Prefer it over ``Vector`` when copying it cheaply is not needed." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:164 +#: ../../docs/engine_details/architecture/core_types.rst:83 msgid "|array| 📜" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:164 +#: ../../docs/engine_details/architecture/core_types.rst:83 msgid "Values can be of any Variant type. No static typing is imposed. Uses shared reference counting, similar to ``std::shared_ptr``. Uses Vector internally." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:168 +#: ../../docs/engine_details/architecture/core_types.rst:87 msgid "|typed_array| 📜" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:168 +#: ../../docs/engine_details/architecture/core_types.rst:87 msgid "Subclass of ``Array`` but with static typing for its elements. Not to be confused with ``Packed*Array``, which is internally a ``Vector``." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:171 +#: ../../docs/engine_details/architecture/core_types.rst:90 msgid "|packed_array| 📜" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:171 +#: ../../docs/engine_details/architecture/core_types.rst:90 msgid "Alias of ``Vector``, e.g. ``PackedColorArray = Vector``. Only a limited list of packed array types are available (use ``TypedArray`` otherwise)." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:175 +#: ../../docs/engine_details/architecture/core_types.rst:94 msgid "|list|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:175 +#: ../../docs/engine_details/architecture/core_types.rst:94 msgid "``std::list``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:175 +#: ../../docs/engine_details/architecture/core_types.rst:94 msgid "Linked list type. Generally slower than other array/vector types. Prefer using other types in new code, unless using ``List`` avoids the need for type conversions." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:178 +#: ../../docs/engine_details/architecture/core_types.rst:97 msgid "|fixed_vector|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:178 +#: ../../docs/engine_details/architecture/core_types.rst:97 msgid "``std::array``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:178 +#: ../../docs/engine_details/architecture/core_types.rst:97 msgid "Vector with a fixed capacity (more similar to ``boost::container::static_vector``). This container type is more efficient than other vector-like types because it makes no heap allocations." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:182 +#: ../../docs/engine_details/architecture/core_types.rst:101 msgid "|span|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:182 +#: ../../docs/engine_details/architecture/core_types.rst:101 msgid "``std::span``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:182 +#: ../../docs/engine_details/architecture/core_types.rst:101 msgid "Represents read-only access to a contiguous array without needing to copy any data. Note that ``Span`` is designed to be a high performance API: It does not perform parameter correctness checks in the same way you might be used to with other Godot containers. Use with care. `Span` can be constructed from most array-like containers (e.g. ``vector.span()``)." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:188 +#: ../../docs/engine_details/architecture/core_types.rst:107 msgid "|rb_set|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:188 +#: ../../docs/engine_details/architecture/core_types.rst:107 msgid "``std::set``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:188 +#: ../../docs/engine_details/architecture/core_types.rst:107 msgid "Uses a `red-black tree `__ for faster access." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:191 +#: ../../docs/engine_details/architecture/core_types.rst:110 msgid "|v_set|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:191 +#: ../../docs/engine_details/architecture/core_types.rst:110 msgid "``std::flat_set``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:191 +#: ../../docs/engine_details/architecture/core_types.rst:110 msgid "Uses copy-on-write (COW) semantics. This means it's generally slower but can be copied around almost for free. The performance benefits of ``VSet`` aren't established, so prefer using other types." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:195 +#: ../../docs/engine_details/architecture/core_types.rst:114 msgid "|hash_map|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:195 +#: ../../docs/engine_details/architecture/core_types.rst:114 msgid "Defensive (robust but slow) map type. Preserves insertion order. Pointers to keys and values, as well as iterators, are stable under mutation. Use this map type when either of these affordances are needed. Use ``AHashMap`` otherwise." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:200 +#: ../../docs/engine_details/architecture/core_types.rst:119 msgid "|rb_map|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:200 +#: ../../docs/engine_details/architecture/core_types.rst:119 msgid "``std::map``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:200 +#: ../../docs/engine_details/architecture/core_types.rst:119 msgid "Map type that uses a `red-black tree `__ to find keys. The performance benefits of ``RBMap`` aren't established, so prefer using other types." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:204 +#: ../../docs/engine_details/architecture/core_types.rst:123 msgid "|dictionary| 📜" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:204 +#: ../../docs/engine_details/architecture/core_types.rst:123 msgid "Keys and values can be of any Variant type. No static typing is imposed. Uses shared reference counting, similar to ``std::shared_ptr``. Preserves insertion order. Uses ``HashMap`` internally." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:208 +#: ../../docs/engine_details/architecture/core_types.rst:127 msgid "|typed_dictionary| 📜" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:208 +#: ../../docs/engine_details/architecture/core_types.rst:127 msgid "Subclass of ``Dictionary`` but with static typing for its keys and values." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:210 +#: ../../docs/engine_details/architecture/core_types.rst:129 msgid "|pair|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:210 +#: ../../docs/engine_details/architecture/core_types.rst:129 msgid "``std::pair``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:210 +#: ../../docs/engine_details/architecture/core_types.rst:129 msgid "Stores a single pair. See also ``KeyValue`` in the same file, which uses read-only keys." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:235 +#: ../../docs/engine_details/architecture/core_types.rst:154 +msgid "Relocation safety" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:156 +msgid "Godot's containers assume their elements are `trivially relocatable `__." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:158 +msgid "This means that, if you store data types in it that have pointers to themselves, or are otherwise `not trivially relocatable `__, Godot might crash. Note that storing **pointers to** objects that are not trivially relocatable, such as some Object subclasses, is unproblematic and supported." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:163 +msgid "The reason to assume trivial relocatability is that it allows us to make use of important optimization techniques, such as relocation by ``memcpy`` or ``realloc``." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:166 +msgid "`GH-100509 `__ tracks this decision." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:171 +msgid "Multithreading / Concurrency" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:175 +msgid "You can find more information on multithreading strategies at :ref:`doc_using_multiple_threads`." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:177 +msgid "None of Godot's containers are thread-safe. When you expect multiple threads to access them, you must use multithread protections." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:180 +msgid "Note that some of the types listed here are also available through the bindings, but the binding types are wrapped with :ref:`class_RefCounted` (found in the ``CoreBind::`` namespace). Prefer the primitives listed here when possible, for efficiency reasons." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:187 +msgid "|mutex|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:187 +msgid "``std::recursive_mutex``" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:187 +msgid "Recursive mutex type. Use ``MutexLock lock(mutex)`` to lock it." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:189 +msgid "|binary_mutex|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:189 +#: ../../docs/engine_details/architecture/core_types.rst:194 +msgid "``std::mutex``" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:189 +msgid "Non-recursive mutex type. Use ``MutexLock lock(mutex)`` to lock it." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:191 +msgid "|rw_lock|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:191 +msgid "``std::shared_timed_mutex``" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:191 +msgid "Read-write aware mutex type. Use ``RWLockRead lock(mutex)`` or ``RWLockWrite lock(mutex)`` to lock it." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:194 +msgid "|safe_binary_mutex|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:194 +msgid "Recursive mutex type that can be used with ``ConditionVariable``. Use ``MutexLock lock(mutex)`` to lock it." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:197 +msgid "|condition_variable|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:197 +msgid "``std::condition_variable``" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:197 +msgid "Condition variable type, used with ``SafeBinaryMutex``." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:199 +msgid "|semaphore|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:199 +msgid "``std::counting_semaphore``" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:199 +msgid "Counting semaphore type." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:201 +msgid "|safe_numeric|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:201 +#: ../../docs/engine_details/architecture/core_types.rst:205 +msgid "``std::atomic``" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:201 +msgid "Templated atomic type, designed for numbers." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:203 +msgid "|safe_flag|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:203 +msgid "``std::atomic_bool``" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:203 +msgid "Bool atomic type." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:205 +msgid "|safe_ref_count|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:205 +msgid "Atomic type designed for reference counting. Will refuse to increment the reference count if it is 0." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:220 msgid "Math types" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:237 +#: ../../docs/engine_details/architecture/core_types.rst:222 msgid "There are several linear math types available in the ``core/math`` directory:" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:240 +#: ../../docs/engine_details/architecture/core_types.rst:225 msgid "`core/math `__" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:243 +#: ../../docs/engine_details/architecture/core_types.rst:228 msgid "NodePath" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:245 +#: ../../docs/engine_details/architecture/core_types.rst:230 msgid "This is a special datatype used for storing paths in a scene tree and referencing them in an optimized manner:" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:248 +#: ../../docs/engine_details/architecture/core_types.rst:233 msgid "`core/string/node_path.h `__" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:251 +#: ../../docs/engine_details/architecture/core_types.rst:236 msgid "RID" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:253 +#: ../../docs/engine_details/architecture/core_types.rst:238 msgid "RIDs are *Resource IDs*. Servers use these to reference data stored in them. RIDs are opaque, meaning that the data they reference can't be accessed directly. RIDs are unique, even for different types of referenced data:" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:258 +#: ../../docs/engine_details/architecture/core_types.rst:243 msgid "`core/templates/rid.h `__" msgstr "" diff --git a/sphinx/templates/engine_details/architecture/custom_audiostreams.pot b/sphinx/templates/engine_details/architecture/custom_audiostreams.pot index 48ee3fffaf..d2f4db650c 100644 --- a/sphinx/templates/engine_details/architecture/custom_audiostreams.pot +++ b/sphinx/templates/engine_details/architecture/custom_audiostreams.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/architecture/custom_godot_servers.pot b/sphinx/templates/engine_details/architecture/custom_godot_servers.pot index b9705ef638..6bf8283f88 100644 --- a/sphinx/templates/engine_details/architecture/custom_godot_servers.pot +++ b/sphinx/templates/engine_details/architecture/custom_godot_servers.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/architecture/custom_modules_in_cpp.pot b/sphinx/templates/engine_details/architecture/custom_modules_in_cpp.pot index 8673651701..5ef0f0f2a8 100644 --- a/sphinx/templates/engine_details/architecture/custom_modules_in_cpp.pot +++ b/sphinx/templates/engine_details/architecture/custom_modules_in_cpp.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/architecture/custom_platform_ports.pot b/sphinx/templates/engine_details/architecture/custom_platform_ports.pot index b276a56bf9..fdf968f689 100644 --- a/sphinx/templates/engine_details/architecture/custom_platform_ports.pot +++ b/sphinx/templates/engine_details/architecture/custom_platform_ports.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/architecture/custom_resource_format_loaders.pot b/sphinx/templates/engine_details/architecture/custom_resource_format_loaders.pot index a02e768806..904d4023c7 100644 --- a/sphinx/templates/engine_details/architecture/custom_resource_format_loaders.pot +++ b/sphinx/templates/engine_details/architecture/custom_resource_format_loaders.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/architecture/godot_architecture_diagram.pot b/sphinx/templates/engine_details/architecture/godot_architecture_diagram.pot index 83213bf903..518ab185c6 100644 --- a/sphinx/templates/engine_details/architecture/godot_architecture_diagram.pot +++ b/sphinx/templates/engine_details/architecture/godot_architecture_diagram.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/architecture/index.pot b/sphinx/templates/engine_details/architecture/index.pot index 7bb4d0582f..0d7f170e1f 100644 --- a/sphinx/templates/engine_details/architecture/index.pot +++ b/sphinx/templates/engine_details/architecture/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -15,11 +15,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../docs/engine_details/architecture/index.rst:4 +#: ../../docs/engine_details/architecture/index.rst:6 msgid "Engine architecture" msgstr "" -#: ../../docs/engine_details/architecture/index.rst:6 +#: ../../docs/engine_details/architecture/index.rst:8 msgid "The following pages are meant to introduce the global organization of Godot Engine's source code, and give useful tips for extending and fixing the engine on the C++ side." msgstr "" @@ -27,7 +27,7 @@ msgstr "" msgid "Getting started with Godot's source code" msgstr "" -#: ../../docs/engine_details/architecture/index.rst:12 +#: ../../docs/engine_details/architecture/index.rst:14 msgid "This section covers the basics that you will encounter in (almost) every source file." msgstr "" @@ -35,6 +35,6 @@ msgstr "" msgid "Extending Godot by modifying its source code" msgstr "" -#: ../../docs/engine_details/architecture/index.rst:31 +#: ../../docs/engine_details/architecture/index.rst:33 msgid "This section covers what you can do by modifying Godot's C++ source code." msgstr "" diff --git a/sphinx/templates/engine_details/architecture/inheritance_class_tree.pot b/sphinx/templates/engine_details/architecture/inheritance_class_tree.pot index 8dc340b91e..3d1e64eafd 100644 --- a/sphinx/templates/engine_details/architecture/inheritance_class_tree.pot +++ b/sphinx/templates/engine_details/architecture/inheritance_class_tree.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/architecture/internal_rendering_architecture.pot b/sphinx/templates/engine_details/architecture/internal_rendering_architecture.pot index 1ec2dbb87a..a04e0df86d 100644 --- a/sphinx/templates/engine_details/architecture/internal_rendering_architecture.pot +++ b/sphinx/templates/engine_details/architecture/internal_rendering_architecture.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/architecture/object_class.pot b/sphinx/templates/engine_details/architecture/object_class.pot index d1090682e8..b864427cea 100644 --- a/sphinx/templates/engine_details/architecture/object_class.pot +++ b/sphinx/templates/engine_details/architecture/object_class.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -28,184 +28,176 @@ msgid "General definition" msgstr "" #: ../../docs/engine_details/architecture/object_class.rst:14 -msgid ":ref:`Object ` is the base class for almost everything. Most classes in Godot inherit directly or indirectly from it. Objects provide reflection and editable properties, and declaring them is a matter of using a single macro like this:" +msgid ":ref:`Object ` is the base class for almost everything. Most classes in Godot inherit directly or indirectly from it. Declaring them is a matter of using a single macro like this:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:26 -msgid "This adds a lot of functionality to Objects. For example:" +#: ../../docs/engine_details/architecture/object_class.rst:24 +msgid "Objects come with a lot of built-in functionality, like reflection and editable properties:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:36 -#: ../../docs/engine_details/architecture/object_class.rst:98 -#: ../../docs/engine_details/architecture/object_class.rst:270 -#: ../../docs/engine_details/architecture/object_class.rst:286 -#: ../../docs/engine_details/architecture/object_class.rst:307 -#: ../../docs/engine_details/architecture/object_class.rst:326 +#: ../../docs/engine_details/architecture/object_class.rst:34 +#: ../../docs/engine_details/architecture/object_class.rst:112 +#: ../../docs/engine_details/architecture/object_class.rst:324 +#: ../../docs/engine_details/architecture/object_class.rst:362 +#: ../../docs/engine_details/architecture/object_class.rst:383 +#: ../../docs/engine_details/architecture/object_class.rst:402 msgid "References:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:38 +#: ../../docs/engine_details/architecture/object_class.rst:36 msgid "`core/object/object.h `__" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:41 -msgid "Registering an Object" +#: ../../docs/engine_details/architecture/object_class.rst:39 +msgid "Registering Object classes" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:43 -msgid "ClassDB is a static class that holds the entire list of registered classes that inherit from Object, as well as dynamic bindings to all their methods properties and integer constants." +#: ../../docs/engine_details/architecture/object_class.rst:41 +msgid "Most ``Object`` subclasses are registered by calling ``GDREGISTER_CLASS``." msgstr "" #: ../../docs/engine_details/architecture/object_class.rst:47 -msgid "Classes are registered by calling:" +msgid "This will register it as a named, public class in the ``ClassDB``, which will allow the class to be instantiated by scripts, code, or by deserialization. Note that classes registered as ``GDREGISTER_CLASS`` should expect to be instantiated or freed automatically, for example by the editor or the documentation system." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:53 -msgid "Registering it will allow the class to be instanced by scripts, code, or creating them again when deserializing." +#: ../../docs/engine_details/architecture/object_class.rst:51 +msgid "Besides ``GDREGISTER_CLASS``, there are a few other modes of privateness:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:56 -msgid "Registering as virtual is the same but it can't be instanced." -msgstr "" - -#: ../../docs/engine_details/architecture/object_class.rst:62 -msgid "Object-derived classes can override the static function ``static void _bind_methods()``. When one class is registered, this static function is called to register all the object methods, properties, constants, etc. It's only called once. If an Object derived class is instanced but has not been registered, it will be registered as virtual automatically." -msgstr "" - -#: ../../docs/engine_details/architecture/object_class.rst:69 -msgid "Inside ``_bind_methods``, there are a couple of things that can be done. Registering functions is one:" +#: ../../docs/engine_details/architecture/object_class.rst:71 +msgid "It is also possible to use ``GDSOFTCLASS(MyCustomClass, SuperClass)`` instead of ``GDCLASS(MyCustomClass, SuperClass)``. Classes defined this way are not registered in the ``ClassDB`` at all. This is sometimes used for platform-specific subclasses." msgstr "" #: ../../docs/engine_details/architecture/object_class.rst:76 +msgid "Registering bindings" +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:78 +msgid "Object-derived classes can override the static function ``static void _bind_methods()``. When the class is registered, this static function is called to register all the object methods, properties, constants, etc. It's only called once." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:83 +msgid "Inside ``_bind_methods``, there are a couple of things that can be done. Registering functions is one:" +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:90 msgid "Default values for arguments can be passed as parameters at the end:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:82 +#: ../../docs/engine_details/architecture/object_class.rst:96 msgid "Default values must be provided in the same order as they are declared, skipping required arguments and then providing default values for the optional ones. This matches the syntax for declaring methods in C++." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:86 +#: ../../docs/engine_details/architecture/object_class.rst:100 msgid "``D_METHOD`` is a macro that converts \"methodname\" to a StringName for more efficiency. Argument names are used for introspection, but when compiling on release, the macro ignores them, so the strings are unused and optimized away." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:91 +#: ../../docs/engine_details/architecture/object_class.rst:105 msgid "Check ``_bind_methods`` of Control or Object for more examples." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:93 +#: ../../docs/engine_details/architecture/object_class.rst:107 msgid "If just adding modules and functionality that is not expected to be documented as thoroughly, the ``D_METHOD()`` macro can safely be ignored and a string passing the name can be passed for brevity." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:100 +#: ../../docs/engine_details/architecture/object_class.rst:114 msgid "`core/object/class_db.h `__" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:103 +#: ../../docs/engine_details/architecture/object_class.rst:117 msgid "Constants" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:105 +#: ../../docs/engine_details/architecture/object_class.rst:119 msgid "Classes often have enums such as:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:114 +#: ../../docs/engine_details/architecture/object_class.rst:128 msgid "For these to work when binding to methods, the enum must be declared convertible to int. A macro is provided to help with this:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:121 +#: ../../docs/engine_details/architecture/object_class.rst:135 msgid "The constants can also be bound inside ``_bind_methods``, by using:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:129 +#: ../../docs/engine_details/architecture/object_class.rst:143 msgid "Properties (set/get)" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:131 +#: ../../docs/engine_details/architecture/object_class.rst:145 msgid "Objects export properties, properties are useful for the following:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:133 +#: ../../docs/engine_details/architecture/object_class.rst:147 msgid "Serializing and deserializing the object." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:134 +#: ../../docs/engine_details/architecture/object_class.rst:148 msgid "Creating a list of editable values for the Object derived class." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:136 +#: ../../docs/engine_details/architecture/object_class.rst:150 msgid "Properties are usually defined by the PropertyInfo() class and constructed as:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:143 +#: ../../docs/engine_details/architecture/object_class.rst:157 msgid "For example:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:149 +#: ../../docs/engine_details/architecture/object_class.rst:163 msgid "This is an integer property named \"amount\". The hint is a range, and the range goes from 0 to 49 in steps of 1 (integers). It is only usable for the editor (editing the value visually) but won't be serialized." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:153 +#: ../../docs/engine_details/architecture/object_class.rst:167 msgid "Another example:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:159 +#: ../../docs/engine_details/architecture/object_class.rst:173 msgid "This is a string property, can take any string but the editor will only allow the defined hint ones. Since no usage flags were specified, the default ones are PROPERTY_USAGE_STORAGE and PROPERTY_USAGE_EDITOR." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:163 +#: ../../docs/engine_details/architecture/object_class.rst:177 msgid "There are plenty of hints and usage flags available in object.h, give them a check." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:166 +#: ../../docs/engine_details/architecture/object_class.rst:180 msgid "Properties can also work like C# properties and be accessed from script using indexing, but this usage is generally discouraged, as using functions is preferred for legibility. Many properties are also bound with categories, such as \"animation/frame\" which also make indexing impossible unless using operator []." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:172 +#: ../../docs/engine_details/architecture/object_class.rst:186 msgid "From ``_bind_methods()``, properties can be created and bound as long as set/get functions exist. Example:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:179 +#: ../../docs/engine_details/architecture/object_class.rst:193 msgid "This creates the property using the setter and the getter." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:184 +#: ../../docs/engine_details/architecture/object_class.rst:198 msgid "Binding properties using ``_set``/``_get``/``_get_property_list``" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:186 +#: ../../docs/engine_details/architecture/object_class.rst:200 msgid "An additional method of creating properties exists when more flexibility is desired (i.e. adding or removing properties on context)." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:189 +#: ../../docs/engine_details/architecture/object_class.rst:203 msgid "The following functions can be overridden in an Object derived class, they are NOT virtual, DO NOT make them virtual, they are called for every override and the previous ones are not invalidated (multilevel call)." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:201 +#: ../../docs/engine_details/architecture/object_class.rst:215 msgid "This is also a little less efficient since ``p_property`` must be compared against the desired names in serial order." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:205 -msgid "Dynamic casting" -msgstr "" - -#: ../../docs/engine_details/architecture/object_class.rst:207 -msgid "Godot provides dynamic casting between Object-derived classes, for example:" -msgstr "" - -#: ../../docs/engine_details/architecture/object_class.rst:217 -msgid "If cast fails, NULL is returned. This system uses RTTI, but it also works fine (although a bit slower) when RTTI is disabled. This is useful on platforms where a small binary size is ideal, such as HTML5 or consoles (with low memory footprint)." -msgstr "" - -#: ../../docs/engine_details/architecture/object_class.rst:223 +#: ../../docs/engine_details/architecture/object_class.rst:220 msgid "Signals" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:225 +#: ../../docs/engine_details/architecture/object_class.rst:222 msgid "Objects can have a set of signals defined (similar to Delegates in other languages). This example shows how to connect to them:" msgstr "" #: ../../docs/engine_details/architecture/object_class.rst:234 -msgid "The method ``_node_entered_tree`` must be registered to the class using ``ClassDB::bind_method`` (explained before)." +msgid "``callable_mp`` is a macro to create a custom callable function pointer to member functions. For the values of ``p_flags``, see :ref:`ConnectFlags `." msgstr "" #: ../../docs/engine_details/architecture/object_class.rst:237 @@ -213,77 +205,141 @@ msgid "Adding signals to a class is done in ``_bind_methods``, using the ``ADD_S msgstr "" #: ../../docs/engine_details/architecture/object_class.rst:245 -msgid "Notifications" +msgid "Object ownership and casting" msgstr "" #: ../../docs/engine_details/architecture/object_class.rst:247 -msgid "All objects in Godot have a :ref:`_notification ` method that allows it to respond to engine level callbacks that may relate to it. More information can be found on the :ref:`doc_godot_notifications` page." +msgid "Objects are allocated on the heap. There are two different ownership models:" +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:249 +msgid "Objects derived from ``RefCounted`` are reference counted." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:250 +msgid "All other objects are manually memory managed." msgstr "" #: ../../docs/engine_details/architecture/object_class.rst:252 -msgid "References" +msgid "The ownership models are fundamentally different. Refer to the section for each respectively to learn how to create, store, and free the object." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:254 -msgid ":ref:`RefCounted ` inherits from Object and holds a reference count. It is the base for reference counted object types. Declaring them must be done using Ref<> template. For example:" +#: ../../docs/engine_details/architecture/object_class.rst:255 +msgid "When you do not know whether an object passed to you (via ``Object *``) is ``RefCounted``, and you need to store it, you should store its ``ObjectID`` rather than a pointer (as explained below, in the manual memory management section)." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:266 -msgid "``myref`` is reference counted. It will be freed when no more Ref<> templates point to it." +#: ../../docs/engine_details/architecture/object_class.rst:258 +msgid "When an object is passed to you via :ref:`Variant`, especially when using deferred callbacks, it is possible that the contained ``Object *`` was already freed by the time your function runs. Instead of converting directly to ``Object *``, you should use ``get_validated_object``:" +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:270 +msgid "Manual memory management" msgstr "" #: ../../docs/engine_details/architecture/object_class.rst:272 -msgid "`core/object/reference.h `__" +msgid "Manually memory managed objects are created using ``memnew`` and freed using ``memdelete``:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:275 +#: ../../docs/engine_details/architecture/object_class.rst:281 +msgid "When you are not the sole owner of an object, storing a pointer to it is dangerous: The object may at any point be freed through other references to it, causing your pointer to become a dangling pointer, which will eventually result in a crash." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:285 +msgid "When storing objects you are not the only owner of, you should store its ``ObjectID`` rather than a pointer:" +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:296 +msgid "``RefCounted`` memory management" +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:298 +msgid ":ref:`RefCounted ` subclasses are memory managed with `reference counting semantics `__." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:301 +msgid "They are constructed using ``memnew``, and should be stored in ``Ref`` instances. When the last ``Ref`` instance is dropped, the object automatically self-destructs." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:317 +msgid "You should never call ``memdelete`` for ``RefCounted`` subclasses, because there may be other owners of it." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:319 +msgid "You should also never store ``RefCounted`` subclasses using raw pointers, for example ``RefCounted *object = memnew(RefCounted)``. This is unsafe because other owners may destruct the object, leaving you with a dangling pointer, which will eventually result in a crash." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:326 +msgid "`core/object/ref_counted.h `__" +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:329 +msgid "Dynamic casting" +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:331 +msgid "Godot provides dynamic casting between Object-derived classes, for example:" +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:339 +msgid "If the cast fails, ``nullptr`` is returned. This works the same as ``dynamic_cast``, but does not use `C++ RTTI `__." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:343 +msgid "Notifications" +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:345 +msgid "All objects in Godot have a :ref:`_notification ` method that allows them to respond to engine-level callbacks that may relate to it. More information can be found on the :ref:`doc_godot_notifications` page." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:351 msgid "Resources" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:277 +#: ../../docs/engine_details/architecture/object_class.rst:353 msgid ":ref:`Resource ` inherits from RefCounted, so all resources are reference counted. Resources can optionally contain a path, which reference a file on disk. This can be set with ``resource.set_path(path)``, though this is normally done by the resource loader. No two different resources can have the same path; attempting to do so will result in an error." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:283 +#: ../../docs/engine_details/architecture/object_class.rst:359 msgid "Resources without a path are fine too." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:288 +#: ../../docs/engine_details/architecture/object_class.rst:364 msgid "`core/io/resource.h `__" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:291 +#: ../../docs/engine_details/architecture/object_class.rst:367 msgid "Resource loading" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:293 +#: ../../docs/engine_details/architecture/object_class.rst:369 msgid "Resources can be loaded with the ResourceLoader API, like this:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:299 +#: ../../docs/engine_details/architecture/object_class.rst:375 msgid "If a reference to that resource has been loaded previously and is in memory, the resource loader will return that reference. This means that there can be only one resource loaded from a file referenced on disk at the same time." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:304 +#: ../../docs/engine_details/architecture/object_class.rst:380 msgid "resourceinteractiveloader (TODO)" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:309 +#: ../../docs/engine_details/architecture/object_class.rst:385 msgid "`core/io/resource_loader.h `__" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:312 +#: ../../docs/engine_details/architecture/object_class.rst:388 msgid "Resource saving" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:314 +#: ../../docs/engine_details/architecture/object_class.rst:390 msgid "Saving a resource can be done with the resource saver API:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:320 +#: ../../docs/engine_details/architecture/object_class.rst:396 msgid "The instance will be saved, and sub resources that have a path to a file will be saved as a reference to that resource. Sub resources without a path will be bundled with the saved resource and assigned sub-IDs, like ``res://someresource.res::1``. This also helps to cache them when loaded." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:328 +#: ../../docs/engine_details/architecture/object_class.rst:404 msgid "`core/io/resource_saver.h `__" msgstr "" diff --git a/sphinx/templates/engine_details/architecture/scripting_development.pot b/sphinx/templates/engine_details/architecture/scripting_development.pot index da3d4a14e2..f3c1059deb 100644 --- a/sphinx/templates/engine_details/architecture/scripting_development.pot +++ b/sphinx/templates/engine_details/architecture/scripting_development.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/architecture/unit_testing.pot b/sphinx/templates/engine_details/architecture/unit_testing.pot index b550ed28d0..8f7c17c211 100644 --- a/sphinx/templates/engine_details/architecture/unit_testing.pot +++ b/sphinx/templates/engine_details/architecture/unit_testing.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/architecture/variant_class.pot b/sphinx/templates/engine_details/architecture/variant_class.pot index 377b9e1ca7..529cff3a48 100644 --- a/sphinx/templates/engine_details/architecture/variant_class.pot +++ b/sphinx/templates/engine_details/architecture/variant_class.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -286,7 +286,7 @@ msgid "Both :ref:`class_array` and :ref:`class_dictionary` are implemented using msgstr "" #: ../../docs/engine_details/architecture/variant_class.rst:146 -msgid "Modifications to a container will modify all references to it. A Mutex should be created to lock it if :ref:`multi-threaded access ` is desired." +msgid "Modifications to a container will modify all references to it. A :ref:`Mutex ` should be created to lock it if :ref:`multi-threaded access ` is desired." msgstr "" #: ../../docs/engine_details/architecture/variant_class.rst:153 diff --git a/sphinx/templates/engine_details/class_reference/index.pot b/sphinx/templates/engine_details/class_reference/index.pot index ed2c0d4df9..fa3667fcc6 100644 --- a/sphinx/templates/engine_details/class_reference/index.pot +++ b/sphinx/templates/engine_details/class_reference/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/compiling/compiling_for_android.pot b/sphinx/templates/engine_details/development/compiling/compiling_for_android.pot index 7f86d67a9f..ac79754637 100644 --- a/sphinx/templates/engine_details/development/compiling/compiling_for_android.pot +++ b/sphinx/templates/engine_details/development/compiling/compiling_for_android.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -52,302 +52,293 @@ msgid "`SCons 4.0+ `_ build system." msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_android.rst:31 -msgid "`Android SDK `_ (command-line tools are sufficient)." +msgid "Android SDK" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:33 +msgid "To install the Android SDK, follow the steps here _." msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_android.rst:34 -msgid "Required SDK components will be automatically installed." -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:35 msgid "On Linux, **do not use an Android SDK provided by your distribution's repositories** as it will often be outdated." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:36 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:35 msgid "On macOS, **do not use an Android SDK provided by Homebrew** as it will not be installed in a unified location." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:38 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:37 msgid "Gradle (will be downloaded and installed automatically if missing)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:39 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:38 msgid "JDK 17 (either OpenJDK or Oracle JDK)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:41 -msgid "You can download a build from `Adoptium `_." +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:40 +msgid "You can download a build from `Adoptium `_." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:43 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:42 msgid "To get the Godot source code for compiling, see :ref:`doc_getting_source`." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:46 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:45 msgid "For a general overview of SCons usage for Godot, see :ref:`doc_introduction_to_the_buildsystem`." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:52 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:51 msgid "Setting up the buildsystem" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:54 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:53 msgid "Set the environment variable ``ANDROID_HOME`` to point to the Android SDK. If you downloaded the Android command-line tools, this would be the folder where you extracted the contents of the ZIP archive." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:58 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:57 msgid "Windows: Press :kbd:`Windows + R`, type \"control system\", then click on **Advanced system settings** in the left pane, then click on **Environment variables** on the window that appears." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:62 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:61 msgid "Linux or macOS: Add the text ``export ANDROID_HOME=\"/path/to/android-sdk\"`` to your ``.bashrc`` or ``.zshrc`` where ``/path/to/android-sdk`` points to the root of the SDK directories." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:66 -msgid "Install the necessary SDK components in this folder:" -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:68 -msgid "Accept the SDK component licenses by running the following command where ``android_sdk_path`` is the path to the Android SDK, then answering all the prompts with ``y``:" -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:75 -msgid "Complete setup by running the following command where ``android_sdk_path`` is the path to the Android SDK." -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:81 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:65 msgid "After setting up the SDK and environment variables, be sure to **restart your terminal** to apply the changes. If you are using an IDE with an integrated terminal, you need to restart the IDE." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:85 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:69 msgid "Run ``scons platform=android``. If this fails, go back and check the steps. If you completed the setup correctly, the NDK will begin downloading. If you are trying to compile GDExtension, you need to first compile the engine to download the NDK, then you can compile GDExtension." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:91 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:75 msgid "Building the export templates" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:93 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:77 msgid "Godot needs three export templates for Android: the optimized \"release\" template (``android_release.apk``), the debug template (``android_debug.apk``), and the Gradle build template (``android_source.zip``). As Google requires all APKs to include ARMv8 (64-bit) libraries since August 2019, the commands below build templates containing both ARMv7 and ARMv8 libraries." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:99 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:83 msgid "Compiling the standard export templates is done by calling SCons from the Godot root directory with the following arguments:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:102 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:86 msgid "Release template (used when exporting with **Debugging Enabled** unchecked)" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:109 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:93 msgid "Debug template (used when exporting with **Debugging Enabled** checked)" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:116 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:100 msgid "(**Optional**) Dev template (used when troubleshooting)" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:123 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:107 msgid "The resulting templates will be located under the ``bin`` directory:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:125 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:109 msgid "``bin/android_release.apk`` for the release template" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:126 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:110 msgid "``bin/android_debug.apk`` for the debug template" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:127 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:111 msgid "``bin/android_dev.apk`` for the dev template" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:128 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:112 msgid "``bin/android_source.zip`` for the Gradle build template" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:132 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:116 msgid "If you are changing the list of architectures you're building, remember to add ``generate_android_binaries=yes`` to the *last* architecture you're building, so that the template files are generated after the build." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:134 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:118 msgid "To include debug symbols in the generated templates, add the ``debug_symbols=yes`` parameters to the SCons command." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:136 -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:233 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:120 msgid "Note that you can include ``separate_debug_symbols=yes`` to generate the debug symbols in a separate ``*-native-debug-symbols.zip`` file." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:140 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:124 msgid "If you want to enable Vulkan validation layers, see :ref:`Vulkan validation layers on Android `." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:144 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:128 msgid "Adding support for x86 devices" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:146 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:130 msgid "If you also want to include support for x86 and x86_64 devices, run the SCons command a third and fourth time with the ``arch=x86_32``, and ``arch=x86_64`` arguments before building the APK with Gradle. For example, for the release template:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:158 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:142 msgid "This will create template binaries that works on all platforms. The final binary size of exported projects will depend on the platforms you choose to support when exporting; in other words, unused platforms will be removed from the binary." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:164 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:148 msgid "Cleaning the generated export templates" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:166 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:150 msgid "You can use the following commands to remove the generated export templates:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:178 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:162 msgid "Using the export templates" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:180 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:164 msgid "Godot needs release and debug binaries that were compiled against the same version/commit as the editor. If you are using official binaries for the editor, make sure to install the matching export templates, or build your own from the same version." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:185 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:169 msgid "When exporting your game, Godot uses the templates as a base, and updates their content as needed." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:188 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:172 msgid "Installing the templates" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:190 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:174 msgid "The newly-compiled templates (``android_debug.apk`` , ``android_release.apk``, and ``android_source.zip``) must be copied to Godot's templates folder with their respective names. The templates folder can be located in:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:194 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:178 msgid "Windows: ``%APPDATA%\\Godot\\export_templates\\\\``" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:195 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:179 msgid "Linux: ``$HOME/.local/share/godot/export_templates//``" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:196 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:180 msgid "macOS: ``$HOME/Library/Application Support/Godot/export_templates//``" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:198 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:182 msgid "```` is of the form ``major.minor[.patch].status`` using values from ``version.py`` in your Godot source repository (e.g. ``4.1.3.stable`` or ``4.2.dev``). You also need to write this same version string to a ``version.txt`` file located next to your export templates." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:205 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:189 msgid "However, if you are writing your custom modules or custom C++ code, you might instead want to configure your template binaries as custom export templates in the project export menu. You must have **Advanced Options** enabled to set this." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:211 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:195 msgid "You don't even need to copy them, you can just reference the resulting file in the ``bin\\`` directory of your Godot source folder, so that the next time you build you will automatically have the custom templates referenced." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:217 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:201 msgid "Building the Godot editor" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:219 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:203 msgid "Compiling the editor is done by calling SCons from the Godot root directory with the following arguments:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:229 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:213 msgid "You can add the ``dev_build=yes`` parameter to generate a dev build of the Godot editor." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:231 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:215 msgid "You can add the ``debug_symbols=yes`` parameters to include the debug symbols in the generated build." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:235 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:217 +msgid "Note that you can include ``separate_debug_symbols=yes`` to the *last* architecture you're building, to generate the debug symbols in a separate ``*-native-debug-symbols.zip`` file." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:219 msgid "You can skip certain architectures depending on your target device to speed up compilation." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:237 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:221 msgid "Remember to add ``generate_android_binaries=yes`` to the *last* architecture you're building, so that binaries are generated after the build." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:239 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:223 msgid "The resulting binaries will be located under ``bin/android_editor_builds/``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:242 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:226 msgid "Removing the Editor binaries" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:244 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:228 msgid "You can use the following commands to remove the generated editor binaries:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:255 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:239 msgid "Installing the Godot editor APK" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:257 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:241 msgid "With an Android device with Developer Options enabled, connect the Android device to your computer via its charging cable to a USB/USB-C port. Open up a Terminal/Command Prompt and run the following commands from the root directory with the following arguments:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:265 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:249 msgid "Troubleshooting" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:268 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:252 msgid "Platform doesn't appear in SCons" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:270 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:254 msgid "Double-check that you've set the ``ANDROID_HOME`` environment variable. This is required for the platform to appear in SCons' list of detected platforms. See :ref:`Setting up the buildsystem ` for more information." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:277 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:261 msgid "Application not installed" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:279 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:263 msgid "Android might complain the application is not correctly installed. If so:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:282 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:266 msgid "Check that the debug keystore is properly generated." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:283 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:267 msgid "Check that the jarsigner executable is from JDK 8." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:285 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:269 msgid "If it still fails, open a command line and run `logcat `_:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:291 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:275 msgid "Then check the output while the application is installed; the error message should be presented there. Seek assistance if you can't figure it out." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:296 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:280 msgid "Application exits immediately" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:298 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:282 msgid "If the application runs but exits immediately, this might be due to one of the following reasons:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:301 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:285 msgid "Make sure to use export templates that match your editor version; if you use a new Godot version, you *have* to update the templates too." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:303 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:287 msgid "``libgodot_android.so`` is not in ``libs//`` where ```` is the device's architecture." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:305 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:289 msgid "The device's architecture does not match the exported one(s). Make sure your templates were built for that device's architecture, and that the export settings included support for that architecture." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:309 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:293 msgid "In any case, ``adb logcat`` should also show the cause of the error." msgstr "" diff --git a/sphinx/templates/engine_details/development/compiling/compiling_for_ios.pot b/sphinx/templates/engine_details/development/compiling/compiling_for_ios.pot index 4cc1b32056..6b7817cb36 100644 --- a/sphinx/templates/engine_details/development/compiling/compiling_for_ios.pot +++ b/sphinx/templates/engine_details/development/compiling/compiling_for_ios.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/compiling/compiling_for_linuxbsd.pot b/sphinx/templates/engine_details/development/compiling/compiling_for_linuxbsd.pot index 5314cffbb4..2d39799557 100644 --- a/sphinx/templates/engine_details/development/compiling/compiling_for_linuxbsd.pot +++ b/sphinx/templates/engine_details/development/compiling/compiling_for_linuxbsd.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -96,12 +96,12 @@ msgid "Arch Linux" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:84 -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:553 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:592 msgid "Debian/Ubuntu" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:105 -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:578 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:617 msgid "Fedora" msgstr "" @@ -182,225 +182,269 @@ msgid "If you want to use separate editor settings for your own Godot builds and msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:301 -msgid "Running a headless/server build" +msgid "Compiling with AccessKit support" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:303 -msgid "To run in *headless* mode which provides editor functionality to export projects in an automated manner, use the normal build:" +msgid "AccessKit provides support for screen readers." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:310 -msgid "And then use the ``--headless`` command line argument:" +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:305 +msgid "By default, Godot is built with AccessKit dynamically linked. You can use it by placing ``accesskit.so`` alongside the executable." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:308 +msgid "You can use dynamically linked AccessKit with export templates as well, rename the SO to ``accesskit.{architecture}.so`` and place them alongside the export template executables, and the libraries will be automatically copied during the export process." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:313 +msgid "To compile Godot with statically linked AccessKit:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:315 +msgid "Download the pre-built static libraries from `godot-accesskit-c-static library `_, and unzip them." msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:316 -msgid "To compile a debug *server* build which can be used with :ref:`remote debugging tools `, use:" +msgid "When building Godot, add ``accesskit_sdk_path={path}`` to tell SCons where to look for the AccessKit libraries:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:323 -msgid "To compile a *server* build which is optimized to run dedicated game servers, use:" +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:322 +msgid "You can optionally build the godot-angle-static libraries yourself with the following steps:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:330 -msgid "Building export templates" +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:325 +msgid "Clone the `godot-accesskit-c-static `_ directory and navigate to it." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:332 -msgid "Linux binaries usually won't run on distributions that are older than the distribution they were built on. If you wish to distribute binaries that work on most distributions, you should build them on an old distribution such as Ubuntu 20.04. You can use a virtual machine or a container to set up a suitable build environment." +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:327 +msgid "Run the following command:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:336 +msgid "The AccessKit static library should be built using the same compiler you are using for building Godot." msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:340 +msgid "Running a headless/server build" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:342 +msgid "To run in *headless* mode which provides editor functionality to export projects in an automated manner, use the normal build:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:349 +msgid "And then use the ``--headless`` command line argument:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:355 +msgid "To compile a debug *server* build which can be used with :ref:`remote debugging tools `, use:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:362 +msgid "To compile a *server* build which is optimized to run dedicated game servers, use:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:369 +msgid "Building export templates" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:371 +msgid "Linux binaries usually won't run on distributions that are older than the distribution they were built on. If you wish to distribute binaries that work on most distributions, you should build them on an old distribution such as Ubuntu 20.04. You can use a virtual machine or a container to set up a suitable build environment." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:379 msgid "To build Linux or \\*BSD export templates, run the build system with the following parameters:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:343 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:382 msgid "(32 bits)" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:350 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:389 msgid "(64 bits)" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:357 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:396 msgid "Note that cross-compiling for the opposite bits (64/32) as your host platform is not always straight-forward and might need a chroot environment." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:360 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:399 msgid "To create standard export templates, the resulting files in the ``bin/`` folder must be copied to:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:367 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:406 msgid "and named like this (even for \\*BSD which is seen as \"Linux/X11\" by Godot):" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:380 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:419 msgid "However, if you are writing your custom modules or custom C++ code, you might instead want to configure your binaries as custom export templates in the project export menu. You must have **Advanced Options** enabled to set this." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:387 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:426 msgid "You don't even need to copy them, you can just reference the resulting files in the ``bin/`` directory of your Godot source folder, so the next time you build, you automatically have the custom templates referenced." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:392 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:431 msgid "Cross-compiling for RISC-V devices" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:394 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:433 msgid "To cross-compile Godot for RISC-V devices, we need to setup the following items:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:396 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:435 msgid "`riscv-gnu-toolchain `__. While we are not going to use this directly, it provides us with a sysroot, as well as header and libraries files that we will need. There are many versions to choose from, however, the older the toolchain, the more compatible our final binaries will be. If in doubt, `use this version `__, and download ``riscv64-glibc-ubuntu-20.04-gcc-nightly-2023.07.07-nightly.tar.gz``. Extract it somewhere and remember its path." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:403 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:442 msgid "`mold `__. This fast linker, is the only one that correctly links the resulting binary. Download it, extract it, and make sure to add its ``bin`` folder to your PATH. Run ``mold --help | grep support`` to check if your version of Mold supports RISC-V. If you don't see RISC-V, your Mold may need to be updated." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:409 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:448 msgid "To make referencing our toolchain easier, we can set an environment variable like this:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:416 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:455 msgid "This way, we won't have to manually set the directory location each time we want to reference it." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:419 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:458 msgid "With all the above setup, we are now ready to build Godot." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:421 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:460 msgid "Go to the root of the source code, and execute the following build command:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:432 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:471 msgid "RISC-V GCC has `bugs with its atomic operations `__ which prevent it from compiling Godot correctly. That's why Clang is used instead. Make sure that it *can* compile to RISC-V. You can verify by executing this command ``clang -print-targets``, make sure you see ``riscv64`` on the list of targets." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:437 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:476 msgid "The code above includes adding ``$RISCV_TOOLCHAIN_PATH/bin`` to the PATH, but only for the following ``scons`` command. Since riscv-gnu-toolchain uses its own Clang located in the ``bin`` folder, adding ``$RISCV_TOOLCHAIN_PATH/bin`` to your user's PATH environment variable may block you from accessing another version of Clang if one is installed. For this reason it's not recommended to make adding the bin folder permanent. You can also omit the ``PATH=\"$RISCV_TOOLCHAIN_PATH/bin:$PATH\"`` line if you want to use scons with self-installed version of Clang, but it may have compatibility issues with riscv-gnu-toolchain." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:446 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:485 msgid "The command is similar in nature, but with some key changes. ``ccflags`` and ``linkflags`` append additional flags to the build. ``--sysroot`` points to a folder simulating a Linux system, it contains all the headers, libraries, and ``.so`` files Clang will use. ``--gcc-toolchain`` tells Clang where the complete toolchain is, and ``-target riscv64-unknown-linux-gnu`` indicates to Clang the target architecture, and OS we want to build for." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:453 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:492 msgid "If all went well, you should now see a ``bin`` directory, and within it, a binary similar to the following:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:460 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:499 msgid "You can now copy this executable to your favorite RISC-V device, then launch it there by double-clicking, which should bring up the project manager." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:464 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:503 msgid "If you later decide to compile the export templates, copy the above build command but change the value of ``target`` to ``template_debug`` for a debug build, or ``template_release`` for a release build." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:469 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:508 msgid "Using Clang and LLD for faster development" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:471 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:510 msgid "You can also use Clang and LLD to build Godot. This has two upsides compared to the default GCC + GNU ld setup:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:474 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:513 msgid "LLD links Godot significantly faster compared to GNU ld or gold. This leads to faster iteration times." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:476 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:515 msgid "Clang tends to give more useful error messages compared to GCC." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:478 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:517 msgid "To do so, install Clang and the ``lld`` package from your distribution's package manager then use the following SCons command:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:485 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:524 msgid "After the build is completed, a new binary with a ``.llvm`` suffix will be created in the ``bin/`` folder." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:488 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:527 msgid "It's still recommended to use GCC for production builds as they can be compiled using link-time optimization, making the resulting binaries smaller and faster." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:491 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:530 msgid "If this error occurs:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:497 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:536 msgid "There are two solutions:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:499 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:538 msgid "In your SCons command, add the parameter ``use_static_cpp=no``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:500 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:539 msgid "Follow `these instructions `__ to configure, build, and install ``libatomic_ops``. Then, copy ``/usr/lib/libatomic_ops.a`` to ``/usr/lib/libatomic.a``, or create a soft link to ``libatomic_ops`` by command ``ln -s /usr/lib/libatomic_ops.a /usr/lib/libatomic.a``. The soft link can ensure the latest ``libatomic_ops`` will be used without the need to copy it every time when it is updated." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:506 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:545 msgid "Using mold for faster development" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:508 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:547 msgid "For even faster linking compared to LLD, you can use `mold `__. mold can be used with either GCC or Clang." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:511 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:550 msgid "As of January 2023, mold is not readily available in Linux distribution repositories, so you will have to install its binaries manually." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:514 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:553 msgid "Download mold binaries from its `releases page `__." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:515 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:554 msgid "Extract the ``.tar.gz`` file, then move the extracted folder to a location such as ``.local/share/mold``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:516 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:555 msgid "Add ``$HOME/.local/share/mold/bin`` to your user's ``PATH`` environment variable. For example, you can add the following line at the end of your ``$HOME/.bash_profile`` file:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:523 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:562 msgid "Open a new terminal (or run ``source \"$HOME/.bash_profile\"``), then use the following SCons command when compiling Godot:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:531 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:570 msgid "Using system libraries for faster development" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:533 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:572 msgid "`Godot bundles the source code of various third-party libraries. `__ You can choose to use system versions of third-party libraries instead. This makes the Godot binary faster to link, as third-party libraries are dynamically linked. Therefore, they don't need to be statically linked every time you build the engine (even on small incremental changes)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:539 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:578 msgid "However, not all Linux distributions have packages for third-party libraries available (or they may not be up-to-date)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:542 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:581 msgid "Moving to system libraries can reduce linking times by several seconds on slow CPUs, but it requires manual testing depending on your Linux distribution. Also, you may not be able to use system libraries for everything due to bugs in the system library packages (or in the build system, as this feature is less tested)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:548 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:587 msgid "To compile Godot with system libraries, install these dependencies **on top** of the ones listed in the :ref:`doc_compiling_for_linuxbsd_oneliners`:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:598 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:637 msgid "After installing all required packages, use the following command to build Godot:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:607 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:646 msgid "On Debian stable, you will need to remove `builtin_embree=no` as the system-provided Embree version is too old to work with Godot's latest `master` branch (which requires Embree 4)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:611 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:650 msgid "You can view a list of all built-in libraries that have system alternatives by running ``scons -h``, then looking for options starting with ``builtin_``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:616 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:655 msgid "When using system libraries, the resulting binary is **not** portable across Linux distributions anymore. Do not use this approach for creating binaries you intend to distribute to others, unless you're creating a package for a Linux distribution." msgstr "" diff --git a/sphinx/templates/engine_details/development/compiling/compiling_for_macos.pot b/sphinx/templates/engine_details/development/compiling/compiling_for_macos.pot index 7ca392aa1a..de44f69076 100644 --- a/sphinx/templates/engine_details/development/compiling/compiling_for_macos.pot +++ b/sphinx/templates/engine_details/development/compiling/compiling_for_macos.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -100,133 +100,193 @@ msgid "If you want to use separate editor settings for your own Godot builds and msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:88 -msgid "Automatic ``.app`` bundle creation" +msgid "Compiling with AccessKit support" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:90 +msgid "AccessKit provides support for screen readers." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:92 +msgid "By default, Godot is built with AccessKit dynamically linked. You can use it by placing ``accesskit.dylib`` alongside the standalone executable or in the app bundle's ``Frameworks`` folder." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:95 +msgid "You can use dynamically linked AccessKit with export templates as well, rename the DYLIB to ``accesskit.{architecture}.dylib`` and place them inside the export template app bundle ``Frameworks`` folder, and the libraries will be automatically copied during the export process." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:100 +msgid "To compile Godot with statically linked AccessKit:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:102 +msgid "Download the pre-built static libraries from `godot-accesskit-c-static library `_, and unzip them." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:103 +msgid "When building Godot, add ``accesskit_sdk_path={path}`` to tell SCons where to look for the AccessKit libraries:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:109 +msgid "You can optionally build the godot-angle-static libraries yourself with the following steps:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:112 +msgid "Clone the `godot-accesskit-c-static `_ directory and navigate to it." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:114 +msgid "Run the following command:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:123 +msgid "The AccessKit static library should be built using the same compiler you are using for building Godot." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:127 +msgid "Automatic ``.app`` bundle creation" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:129 msgid "To automatically create a ``.app`` bundle like in the official builds, use the ``generate_bundle=yes`` option on the *last* SCons command used to build editor:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:99 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:138 msgid "Manual ``.app`` bundle creation" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:101 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:140 msgid "To support both architectures in a single \"Universal 2\" binary, run the above two commands and then use ``lipo`` to bundle them together:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:108 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:147 msgid "To create a ``.app`` bundle, you need to use the template located in ``misc/dist/macos_tools.app``. Typically, for an optimized editor binary built with ``dev_build=yes``:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:121 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:160 msgid "If you are building the ``master`` branch, you also need to include support for the MoltenVK Vulkan portability library. By default, it will be linked statically from your installation of the Vulkan SDK for macOS. You can also choose to link it dynamically by passing ``use_volk=yes`` and including the dynamic library in your ``.app`` bundle:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:133 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:172 msgid "Running a headless/server build" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:135 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:174 msgid "To run in *headless* mode which provides editor functionality to export projects in an automated manner, use the normal build:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:142 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:181 msgid "And then use the ``--headless`` command line argument:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:148 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:187 msgid "To compile a debug *server* build which can be used with :ref:`remote debugging tools `, use:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:155 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:194 msgid "To compile a release *server* build which is optimized to run dedicated game servers, use:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:162 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:201 msgid "Building export templates" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:164 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:203 msgid "To build macOS export templates, you have to compile using the targets without the editor: ``target=template_release`` (release template) and ``target=template_debug``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:168 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:207 msgid "Official templates are *Universal 2* binaries which support both ARM64 and Intel x86_64 architectures." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:171 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:210 msgid "To support ARM64 (Apple Silicon) + Intel x86_64:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:180 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:219 msgid "To support ARM64 (Apple Silicon) only (smaller file size, but less compatible with older hardware):" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:187 -msgid "To create a ``.app`` bundle like in the official builds, you need to use the template located in ``misc/dist/macos_template.app``. This process can be automated by using the ``generate_bundle=yes`` option on the *last* SCons command used to build export templates (so that all binaries can be included). This option also takes care of calling ``lipo`` to create a *Universal 2* binary from two separate ARM64 and x86_64 binaries (if both were compiled beforehand)." +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:226 +msgid "To create a ``.app`` bundle like in the official builds, you need to use the template located in ``misc/dist/macos_template.app``. This process can be automated by using the ``generate_bundle=yes`` option on the *last* SCons command used to build export templates (so that all binaries can be included). This will create a ``godot_macos.zip`` file in ``bin/`` and additionally takes care of calling ``lipo`` to create a *Universal 2* binary from two separate ARM64 and x86_64 binaries (if both were compiled beforehand)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:195 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:235 msgid "You also need to include support for the MoltenVK Vulkan portability library. By default, it will be linked statically from your installation of the Vulkan SDK for macOS. You can also choose to link it dynamically by passing ``use_volk=yes`` and including the dynamic library in your ``.app`` bundle:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:206 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:246 msgid "In most cases, static linking should be preferred as it makes distribution easier. The main upside of dynamic linking is that it allows updating MoltenVK without having to recompile export templates." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:210 -msgid "You can then zip the ``macos_template.app`` folder to reproduce the ``macos.zip`` template from the official Godot distribution:" +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:250 +msgid "If you created the ``.app`` manually, you can zip the ``macos_template.app`` folder to reproduce the ``macos.zip`` template from the official Godot distribution:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:218 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:257 +msgid "To use your custom export templates, you can select the ``godot_macos.zip`` file in the advanced options of your export presets:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:262 +msgid "Alternatively, if you want all your presets to use your custom export template, you can rename the ``godot_macos.zip`` file to ``macos.zip`` and move it to the default location for export templates:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:266 +msgid "::" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:267 +msgid "~/Library/Application Support/Godot/export_templates//macos.zip" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:270 msgid "Cross-compiling for macOS from Linux" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:220 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:272 msgid "It is possible to compile for macOS in a Linux environment (and maybe also in Windows using the Windows Subsystem for Linux). For that, you'll need to install `OSXCross `__ to be able to use macOS as a target. First, follow the instructions to install it:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:225 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:277 msgid "Clone the `OSXCross repository `__ somewhere on your machine (or download a ZIP file and extract it somewhere), e.g.:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:232 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:284 msgid "Follow the instructions to package the SDK: https://github.com/tpoechtrager/osxcross#packaging-the-sdk" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:234 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:286 msgid "Follow the instructions to install OSXCross: https://github.com/tpoechtrager/osxcross#installation" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:237 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:289 msgid "After that, you will need to define the ``OSXCROSS_ROOT`` as the path to the OSXCross installation (the same place where you cloned the repository/extracted the zip), e.g.:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:245 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:297 msgid "Now you can compile with SCons like you normally would:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:251 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:303 msgid "If you have an OSXCross SDK version different from the one expected by the SCons buildsystem, you can specify a custom one with the ``osxcross_sdk`` argument:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:258 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:310 msgid "Troubleshooting" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:261 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:313 msgid "Fatal error: 'cstdint' file not found" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:263 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:315 msgid "If you get a compilation error of this form early on, it's likely because the Xcode command line tools installation needs to be repaired after a macOS or Xcode update:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:273 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:325 msgid "Run these two commands to reinstall Xcode command line tools (enter your administrator password as needed):" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:281 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:333 msgid "If it still does not work, try updating Xcode from the Mac App Store and try again." msgstr "" diff --git a/sphinx/templates/engine_details/development/compiling/compiling_for_visionos.pot b/sphinx/templates/engine_details/development/compiling/compiling_for_visionos.pot index 96ff131f76..8006fd59c9 100644 --- a/sphinx/templates/engine_details/development/compiling/compiling_for_visionos.pot +++ b/sphinx/templates/engine_details/development/compiling/compiling_for_visionos.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/compiling/compiling_for_web.pot b/sphinx/templates/engine_details/development/compiling/compiling_for_web.pot index c3bf99adb7..d5d10b5407 100644 --- a/sphinx/templates/engine_details/development/compiling/compiling_for_web.pot +++ b/sphinx/templates/engine_details/development/compiling/compiling_for_web.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -32,7 +32,7 @@ msgid "To compile export templates for the Web, the following is required:" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_web.rst:18 -msgid "`Emscripten 3.1.62+ `__." +msgid "`Emscripten 4.0.0+ `__." msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_web.rst:19 diff --git a/sphinx/templates/engine_details/development/compiling/compiling_for_windows.pot b/sphinx/templates/engine_details/development/compiling/compiling_for_windows.pot index fce6250039..16160bc3fc 100644 --- a/sphinx/templates/engine_details/development/compiling/compiling_for_windows.pot +++ b/sphinx/templates/engine_details/development/compiling/compiling_for_windows.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -31,379 +31,442 @@ msgstr "" msgid "For compiling under Windows, the following is required:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:19 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:18 msgid "A C++ compiler. Use one of the following:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:21 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:20 msgid "`Visual Studio Community `_, version 2019 or later. Visual Studio 2022 is recommended. **Make sure to enable C++ in the list of workflows to install.** If you've already installed Visual Studio without C++ support, run the installer again; it should present you a **Modify** button. Supports ``x86_64``, ``x86_32``, and ``arm64``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:27 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:26 msgid "`MinGW-w64 `_ with GCC can be used as an alternative to Visual Studio. Be sure to install/configure it to use the ``posix`` thread model. **Important:** When using MinGW to compile the ``master`` branch, you need GCC 9 or later. Supports ``x86_64`` and ``x86_32`` only." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:31 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:30 msgid "`MinGW-LLVM `_ with clang can be used as an alternative to Visual Studio and MinGW-w64. Supports ``x86_64``, ``x86_32``, and ``arm64``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:34 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:33 msgid "`Python 3.8+ `_. **Make sure to enable the option to add Python to the** ``PATH`` **in the installer.**" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:36 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:35 msgid "`SCons 4.0+ `_ build system. Using the latest release is recommended, especially for proper support of recent Visual Studio releases." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:40 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:38 +msgid ":ref:`Direct3D 12 dependencies ` (can be skipped with the ``d3d12=no`` SCons option if Direct3D 12 support is not desired)." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:41 msgid "If you have `Scoop `_ installed, you can easily install MinGW and other dependencies using the following command:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:47 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:48 msgid "Scons will still need to be installed via pip" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:48 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:49 msgid "If you have `MSYS2 `_ installed, you can easily install MinGW and other dependencies using the following command:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:55 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:56 msgid "For each MSYS2 MinGW subsystem, you should then run `pip3 install scons` in its shell." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:58 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:59 msgid "To get the Godot source code for compiling, see :ref:`doc_getting_source`." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:61 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:62 msgid "For a general overview of SCons usage for Godot, see :ref:`doc_introduction_to_the_buildsystem`." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:65 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:66 msgid "Setting up SCons" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:67 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:68 msgid "To install SCons, open the command prompt and run the following command:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:73 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:74 msgid "If you are prompted with the message ``Defaulting to user installation because normal site-packages is not writeable``, you may have to run that command again using elevated permissions. Open a new command prompt as an Administrator then run the command again to ensure that SCons is available from the ``PATH``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:79 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:80 msgid "To check whether you have installed Python and SCons correctly, you can type ``python --version`` and ``scons --version`` into a command prompt (``cmd.exe``)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:83 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:84 msgid "If the commands above don't work, make sure to add Python to your ``PATH`` environment variable after installing it, then check again. You can do so by running the Python installer again and enabling the option to add Python to the ``PATH``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:88 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:89 msgid "If SCons cannot detect your Visual Studio installation, it might be that your SCons version is too old. Update it to the latest version with ``python -m pip install --upgrade scons``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:95 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:96 msgid "Downloading Godot's source" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:97 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:98 msgid "Refer to :ref:`doc_getting_source` for detailed instructions." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:99 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:100 msgid "The tutorial will assume from now on that you placed the source code in ``C:\\godot``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:104 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:105 msgid "To prevent slowdowns caused by continuous virus scanning during compilation, add the Godot source folder to the list of exceptions in your antivirus software." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:108 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:109 msgid "For Windows Defender, hit the :kbd:`Windows` key, type \"Windows Security\" then hit :kbd:`Enter`. Click on **Virus & threat protection** on the left panel. Under **Virus & threat protection settings** click on **Manage Settings** and scroll down to **Exclusions**. Click **Add or remove exclusions** then add the Godot source folder." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:115 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:116 msgid "Compiling" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:118 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:119 msgid "Selecting a compiler" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:120 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:121 msgid "SCons will automatically find and use an existing Visual Studio installation. If you do not have Visual Studio installed, it will attempt to use MinGW instead. If you already have Visual Studio installed and want to use MinGW-w64, pass ``use_mingw=yes`` to the SCons command line. Note that MSVC builds cannot be performed from the MSYS2 or MinGW shells. Use either ``cmd.exe`` or PowerShell instead. If you are using MinGW-LLVM, pass both ``use_mingw=yes`` and ``use_llvm=yes`` to the SCons command line." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:130 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:131 msgid "During development, using the Visual Studio compiler is usually a better idea, as it links the Godot binary much faster than MinGW. However, MinGW can produce more optimized binaries using link-time optimization (see below), making it a better choice for production use. This is particularly the case for the GDScript VM which performs much better with MinGW compared to MSVC. Therefore, it's recommended to use MinGW to produce builds that you distribute to players." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:138 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:139 msgid "All official Godot binaries are built in `custom containers `__ using MinGW." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:143 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:144 msgid "Running SCons" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:145 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:146 msgid "After opening a command prompt, change to the root directory of the engine source code (using ``cd``) and type:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:152 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:153 msgid "When compiling with multiple CPU threads, SCons may warn about pywin32 being missing. You can safely ignore this warning." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:156 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:157 msgid "If you are compiling Godot to make changes or contribute to the engine, you may want to use the SCons options ``dev_build=yes`` or ``dev_mode=yes``. See :ref:`doc_introduction_to_the_buildsystem_development_and_production_aliases` for more info." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:161 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:162 msgid "If all goes well, the resulting binary executable will be placed in ``C:\\godot\\bin\\`` with the name ``godot.windows.editor.x86_32.exe`` or ``godot.windows.editor.x86_64.exe``. By default, SCons will build a binary matching your CPU architecture, but this can be overridden using ``arch=x86_64``, ``arch=x86_32``, or ``arch=arm64``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:167 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:168 msgid "This executable file contains the whole engine and runs without any dependencies. Running it will bring up the Project Manager." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:170 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:171 msgid "If you are compiling Godot for production use, you can make the final executable smaller and faster by adding the SCons option ``production=yes``. This enables additional compiler optimizations and link-time optimization." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:175 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:176 msgid "LTO takes some time to run and requires up to 30 GB of available RAM while compiling (depending on toolchain). If you're running out of memory with the above option, use ``production=yes lto=none`` or ``production=yes lto=thin`` (LLVM only) for a lightweight but less effective form of LTO." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:180 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:181 msgid "If you want to use separate editor settings for your own Godot builds and official releases, you can enable :ref:`doc_data_paths_self_contained_mode` by creating a file called ``._sc_`` or ``_sc_`` in the ``bin/`` folder." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:186 -msgid "Compiling with support for Direct3D 12" -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:188 -msgid "By default, builds of Godot do not contain support for the Direct3D 12 graphics API." +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:189 +msgid "Installing Direct3D 12 requirements" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:191 -msgid "You can install the required dependencies by running ``python misc/scripts/install_d3d12_sdk_windows.py`` in the Godot source repository. After running this script, add the ``d3d12=yes`` SCons option to enable Direct3D 12 support. This will use the default paths for the various dependencies, which match the ones used in the script." +msgid "By default, Windows builds of Godot contain support for the Direct3D 12 graphics API. Compiling with Direct3D 12 support requires additional dependencies to be installed. If you wish to skip this step, you can use the ``d3d12=no`` SCons option; Vulkan and OpenGL support will remain available if you do so." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:197 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:196 +msgid "You can install the required dependencies by running ``python misc/scripts/install_d3d12_sdk_windows.py`` in the Godot source repository. After running this script, compile Godot as usual. This will use the default paths for the various dependencies, which match the ones used in the script." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:202 msgid "You can find the detailed steps below if you wish to set up dependencies manually, but the above script handles everything for you (including the optional PIX and Agility SDK components)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:201 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:206 msgid "`godot-nir-static library `_. We compile the Mesa libraries you will need into a static library. Download it anywhere, unzip it and remember the path to the unzipped folder, you will need it below." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:206 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:211 msgid "You can optionally build the godot-nir-static libraries yourself with the following steps:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:209 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:214 msgid "Install the Python package `mako `_ which is needed to generate some files." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:211 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:216 msgid "Clone the `godot-nir-static `_ directory and navigate to it." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:213 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:218 msgid "Run the following:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:234 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:226 +msgid "If you are building with MinGW-w64, add ``use_mingw=yes`` to the ``scons`` command, you can also specify the build architecture using ``arch={architecture}``. If you are building with MinGW-LLVM, add both ``use_mingw=yes`` and ``use_llvm=yes`` to the ``scons`` command." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:231 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:372 +msgid "If you are building with MinGW and the binaries are not located in the ``PATH``, add ``mingw_prefix=\"/path/to/mingw\"`` to the ``scons`` command." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:235 +msgid "The Mesa static library should be built using the same compiler and the same CRT (if you are building with MinGW) you are using for building Godot." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:239 msgid "Optionally, you can compile with the following for additional features:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:236 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:241 msgid "`PIX `_ is a performance tuning and debugging application for Direct3D12 applications. If you compile-in support for it, you can get much more detailed information through PIX that will help you optimize your game and troubleshoot graphics bugs. To use it, download the WinPixEventRuntime package. You will be taken to a NuGet package page where you can click \"Download package\" to get it. Once downloaded, change the file extension to .zip and unzip the file to some path." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:243 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:248 msgid "`Agility SDK `_ can be used to provide access to the latest Direct3D 12 features without relying on driver updates. To use it, download the latest Agility SDK package. You will be taken to a NuGet package page where you can click \"Download package\" to get it. Once downloaded, change the file extension to .zip and unzip the file to some path." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:250 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:255 msgid "If you use a preview version of the Agility SDK, remember to enable developer mode in Windows; otherwise it won't be used." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:253 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:258 msgid "If you want to use a PIX with MinGW build, navigate to PIX runtime directory and use the following commands to generate import library:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:266 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:271 msgid "When building Godot, you will need to tell SCons to use Direct3D 12 and where to look for the additional libraries:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:273 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:278 msgid "Or, with all options enabled:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:279 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:284 msgid "For the Agility SDK's DLLs you have to explicitly choose the kind of workflow. Single-arch is the default (DLLs copied to ``bin/``). If you pass ``agility_sdk_multi_arch=yes`` to SCons, you'll opt-in for multi-arch. DLLs will be copied to the appropriate ``bin//`` subdirectories and at runtime the right one will be loaded." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:286 -msgid "Compiling with ANGLE support" +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:291 +msgid "Compiling with AccessKit support" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:288 -msgid "ANGLE provides a translation layer from OpenGL ES 3.x to Direct3D 11 and can be used to improve support for the Compatibility renderer on some older GPUs with outdated OpenGL drivers and on Windows for ARM." -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:292 -msgid "By default, Godot is built with dynamically linked ANGLE, you can use it by placing ``libEGL.dll`` and ``libGLESv2.dll`` alongside the executable." +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:293 +msgid "AccessKit provides support for screen readers." msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:295 -msgid "You can use dynamically linked ANGLE with export templates as well, rename aforementioned DLLs to ``libEGL.{architecture}.dll`` and ``libGLESv2.{architecture}.dll`` and place them alongside export template executables, and libraries will be automatically copied during the export process." +msgid "By default, Godot is built with AccessKit dynamically linked. You can use it by placing ``accesskit.dll`` alongside the executable." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:300 -msgid "To compile Godot with statically linked ANGLE:" -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:302 -msgid "Download pre-built static libraries from `godot-angle-static library `_, and unzip them." +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:298 +msgid "You can use dynamically linked AccessKit with export templates as well, rename the DLL to ``accesskit.{architecture}.dll`` and place them alongside the export template executables, and the libraries will be automatically copied during the export process." msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:303 -msgid "When building Godot, add ``angle_libs={path}`` to tell SCons where to look for the ANGLE libraries:" +msgid "To compile Godot with statically linked AccessKit:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:309 -msgid "You can optionally build the godot-angle-static libraries yourself with the following steps:" +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:305 +msgid "Download the pre-built static libraries from `godot-accesskit-c-static library `_, and unzip them." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:306 +msgid "When building Godot, add ``accesskit_sdk_path={path}`` to tell SCons where to look for the AccessKit libraries:" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:312 -msgid "Clone the `godot-angle-static `_ directory and navigate to it." +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:354 +msgid "You can optionally build the godot-angle-static libraries yourself with the following steps:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:314 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:315 +msgid "Clone the `godot-accesskit-c-static `_ directory and navigate to it." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:317 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:359 msgid "Run the following command:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:336 -msgid "Development in Visual Studio" +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:326 +msgid "The AccessKit static library should be built using the same compiler and the same CRT (if you are building with MinGW) you are using for building Godot." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:338 -msgid "Using an IDE is not required to compile Godot, as SCons takes care of everything. But if you intend to do engine development or debugging of the engine's C++ code, you may be interested in configuring a code editor or an IDE." +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:331 +msgid "Compiling with ANGLE support" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:342 -msgid "Folder-based editors don't require any particular setup to start working with Godot's codebase. To edit projects with Visual Studio they need to be set up as a solution." +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:333 +msgid "ANGLE provides a translation layer from OpenGL ES 3.x to Direct3D 11 and can be used to improve support for the Compatibility renderer on some older GPUs with outdated OpenGL drivers and on Windows for ARM." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:337 +msgid "By default, Godot is built with dynamically linked ANGLE, you can use it by placing ``libEGL.dll`` and ``libGLESv2.dll`` alongside the executable." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:340 +msgid "You can use dynamically linked ANGLE with export templates as well, rename the DLLs to ``libEGL.{architecture}.dll`` and ``libGLESv2.{architecture}.dll`` and place them alongside the export template executables, and the libraries will be automatically copied during the export process." msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:345 -msgid "You can create a Visual Studio solution via SCons by running SCons with the ``vsproj=yes`` parameter, like this:" +msgid "To compile Godot with statically linked ANGLE:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:352 -msgid "You will be able to open Godot's source in a Visual Studio solution now, and able to build Godot using Visual Studio's **Build** button." +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:347 +msgid "Download the pre-built static libraries from `godot-angle-static library `_, and unzip them." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:355 -msgid "See :ref:`doc_configuring_an_ide_vs` for further details." +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:348 +msgid "When building Godot, add ``angle_libs={path}`` to tell SCons where to look for the ANGLE libraries:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:358 -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:440 -msgid "Troubleshooting" +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:357 +msgid "Clone the `godot-angle-static `_ directory and navigate to it." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:360 -msgid "If you get a compilation failure when using MSVC, make sure to apply the latest updates. You can do so by starting the Visual Studio IDE and using :button:`Continue without code`, then :menu:`Help > Check for Updates` in the menu bar at the top. Install all updates, then try compiling again." +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:367 +msgid "If you are buildng with MinGW, add ``use_mingw=yes`` to the command, you can also specify the build architecture using ``arch={architecture}``. If you are building with MinGW-LLVM, add both ``use_mingw=yes`` and ``use_llvm=yes`` to the ``scons`` command." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:366 -msgid "Cross-compiling for Windows from other operating systems" +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:376 +msgid "The ANGLE static library should be built using the same compiler and the same CRT (if you are building with MinGW) you are using for building Godot." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:368 -msgid "If you are a Linux or macOS user, you need to install `MinGW-w64 `__, which typically comes in 32-bit and 64-bit variants, or `MinGW-LLVM `_, which comes as a single archive for all target architectures. The package names may differ based on your distribution, here are some known ones:" -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:375 -msgid "**Arch Linux**" -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:379 -msgid "**Debian** / **Ubuntu**" +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:381 +msgid "Development in Visual Studio" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:383 -msgid "**Fedora**" +msgid "Using an IDE is not required to compile Godot, as SCons takes care of everything. But if you intend to do engine development or debugging of the engine's C++ code, you may be interested in configuring a code editor or an IDE." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:388 -msgid "**macOS**" +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:387 +msgid "Folder-based editors don't require any particular setup to start working with Godot's codebase. To edit projects with Visual Studio they need to be set up as a solution." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:392 -msgid "**Mageia**" +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:390 +msgid "You can create a Visual Studio solution via SCons by running SCons with the ``vsproj=yes`` parameter, like this:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:398 -msgid "Before attempting the compilation, SCons will check for the following binaries in your ``PATH`` environment variable:" +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:397 +msgid "You will be able to open Godot's source in a Visual Studio solution now, and able to build Godot using Visual Studio's **Build** button." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:412 -msgid "If the binaries are not located in the ``PATH`` (e.g. ``/usr/bin``), you can define the following environment variable to give a hint to the build system:" +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:400 +msgid "See :ref:`doc_configuring_an_ide_vs` for further details." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:403 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:485 +msgid "Troubleshooting" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:405 +msgid "If you get a compilation failure when using MSVC, make sure to apply the latest updates. You can do so by starting the Visual Studio IDE and using :button:`Continue without code`, then :menu:`Help > Check for Updates` in the menu bar at the top. Install all updates, then try compiling again." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:411 +msgid "Cross-compiling for Windows from other operating systems" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:413 +msgid "If you are a Linux or macOS user, you need to install `MinGW-w64 `__, which typically comes in 32-bit and 64-bit variants, or `MinGW-LLVM `_, which comes as a single archive for all target architectures. The package names may differ based on your distribution, here are some known ones:" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:420 -msgid "Where ``/path/to/mingw`` is the path containing the ``bin`` directory where ``i686-w64-mingw32-gcc`` and ``x86_64-w64-mingw32-gcc`` are located (e.g. ``/opt/mingw-w64`` if the binaries are located in ``/opt/mingw-w64/bin``)." +msgid "**Arch Linux**" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:424 -msgid "To make sure you are doing things correctly, executing the following in the shell should result in a working compiler (the version output may differ based on your system):" +msgid "**Debian** / **Ubuntu**" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:428 +msgid "**Fedora**" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:433 -msgid "If you are building with MinGW-LLVM, add ``use_llvm=yes`` to the ``scons`` command." +msgid "**macOS**" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:434 -msgid "When cross-compiling for Windows using MinGW-w64, keep in mind only ``x86_64`` and ``x86_32`` architectures are supported. MinGW-LLVM supports ``arm64`` as well. Be sure to specify the right ``arch=`` option when invoking SCons if building from a different architecture." +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:437 +msgid "**Mageia**" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:442 -msgid "Cross-compiling from some Ubuntu versions may lead to `this bug `_, due to a default configuration lacking support for POSIX threading." +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:443 +msgid "Before attempting the compilation, SCons will check for the following binaries in your ``PATH`` environment variable:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:446 -msgid "You can change that configuration following those instructions, for 64-bit:" -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:455 -msgid "And for 32-bit:" +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:457 +msgid "If the binaries are not located in the ``PATH`` (e.g. ``/usr/bin``), you can define the following environment variable to give a hint to the build system:" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:465 -msgid "Creating Windows export templates" +msgid "Where ``/path/to/mingw`` is the path containing the ``bin`` directory where ``i686-w64-mingw32-gcc`` and ``x86_64-w64-mingw32-gcc`` are located (e.g. ``/opt/mingw-w64`` if the binaries are located in ``/opt/mingw-w64/bin``)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:467 -msgid "Windows export templates are created by compiling Godot without the editor, with the following flags:" +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:469 +msgid "To make sure you are doing things correctly, executing the following in the shell should result in a working compiler (the version output may differ based on your system):" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:478 +msgid "If you are building with MinGW-LLVM, add ``use_llvm=yes`` to the ``scons`` command." msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:479 -msgid "If you plan on replacing the standard export templates, copy these to the following location, replacing ```` with the version identifier (such as ``4.2.1.stable`` or ``4.3.dev``):" +msgid "When cross-compiling for Windows using MinGW-w64, keep in mind only ``x86_64`` and ``x86_32`` architectures are supported. MinGW-LLVM supports ``arm64`` as well. Be sure to specify the right ``arch=`` option when invoking SCons if building from a different architecture." msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:487 +msgid "Cross-compiling from some Ubuntu versions may lead to `this bug `_, due to a default configuration lacking support for POSIX threading." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:491 +msgid "You can change that configuration following those instructions, for 64-bit:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:500 +msgid "And for 32-bit:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:510 +msgid "Creating Windows export templates" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:512 +msgid "Windows export templates are created by compiling Godot without the editor, with the following flags:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:524 +msgid "If you plan on replacing the standard export templates, copy these to the following location, replacing ```` with the version identifier (such as ``4.2.1.stable`` or ``4.3.dev``):" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:532 msgid "With the following names:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:504 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:549 msgid "However, if you are using custom modules or custom engine code, you may instead want to configure your binaries as custom export templates in the project export menu. You must have **Advanced Options** enabled to set this." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:511 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:556 msgid "You don't need to copy them in this case, just reference the resulting files in the ``bin\\`` directory of your Godot source folder, so the next time you build, you will automatically have the custom templates referenced." msgstr "" diff --git a/sphinx/templates/engine_details/development/compiling/compiling_with_dotnet.pot b/sphinx/templates/engine_details/development/compiling/compiling_with_dotnet.pot index 5801a37f69..dafab59332 100644 --- a/sphinx/templates/engine_details/development/compiling/compiling_with_dotnet.pot +++ b/sphinx/templates/engine_details/development/compiling/compiling_with_dotnet.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/compiling/compiling_with_script_encryption_key.pot b/sphinx/templates/engine_details/development/compiling/compiling_with_script_encryption_key.pot index 54dbb102d6..b837558694 100644 --- a/sphinx/templates/engine_details/development/compiling/compiling_with_script_encryption_key.pot +++ b/sphinx/templates/engine_details/development/compiling/compiling_with_script_encryption_key.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/compiling/cross-compiling_for_ios_on_linux.pot b/sphinx/templates/engine_details/development/compiling/cross-compiling_for_ios_on_linux.pot index d8a91663b8..9f2dc69c1f 100644 --- a/sphinx/templates/engine_details/development/compiling/cross-compiling_for_ios_on_linux.pot +++ b/sphinx/templates/engine_details/development/compiling/cross-compiling_for_ios_on_linux.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/compiling/getting_source.pot b/sphinx/templates/engine_details/development/compiling/getting_source.pot index 7916e31780..b3523b351b 100644 --- a/sphinx/templates/engine_details/development/compiling/getting_source.pot +++ b/sphinx/templates/engine_details/development/compiling/getting_source.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/compiling/index.pot b/sphinx/templates/engine_details/development/compiling/index.pot index 12b7f345b3..a5e80ad3b1 100644 --- a/sphinx/templates/engine_details/development/compiling/index.pot +++ b/sphinx/templates/engine_details/development/compiling/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/compiling/introduction_to_the_buildsystem.pot b/sphinx/templates/engine_details/development/compiling/introduction_to_the_buildsystem.pot index 357b9b1c01..e85cc13ec2 100644 --- a/sphinx/templates/engine_details/development/compiling/introduction_to_the_buildsystem.pot +++ b/sphinx/templates/engine_details/development/compiling/introduction_to_the_buildsystem.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -405,7 +405,7 @@ msgid "To create those yourself, follow the instructions detailed for each platf msgstr "" #: ../../docs/engine_details/development/compiling/introduction_to_the_buildsystem.rst:485 -msgid "The ``version.txt`` file should contain the corresponding Godot version identifier. This file is used to install export templates in a version-specific directory to avoid conflicts. For instance, if you are building export templates for Godot 3.1.1, ``version.txt`` should contain ``3.1.1.stable`` on the first line (and nothing else). This version identifier is based on the ``major``, ``minor``, ``patch`` (if present) and ``status`` lines of the `version.py file in the Godot Git repository `__." +msgid "The ``version.txt`` file should contain the corresponding Godot version identifier. This file is used to install export templates in a version-specific directory to avoid conflicts. For instance, if you are building export templates for Godot 4.4.1, ``version.txt`` should contain ``4.4.1.stable`` on the first line (and nothing else). This version identifier is based on the ``major``, ``minor``, ``patch`` (if present) and ``status`` lines of the `version.py file in the Godot Git repository `__." msgstr "" #: ../../docs/engine_details/development/compiling/introduction_to_the_buildsystem.rst:493 diff --git a/sphinx/templates/engine_details/development/compiling/optimizing_for_size.pot b/sphinx/templates/engine_details/development/compiling/optimizing_for_size.pot index 0d84088fa1..152f04bcfc 100644 --- a/sphinx/templates/engine_details/development/compiling/optimizing_for_size.pot +++ b/sphinx/templates/engine_details/development/compiling/optimizing_for_size.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -101,7 +101,7 @@ msgid "**Performed in official builds:** Yes, but only for web builds" msgstr "" #: ../../docs/engine_details/development/compiling/optimizing_for_size.rst:81 -msgid "Godot 3.1 onwards allows compiling using size optimizations (instead of speed). To enable this, set the ``optimize`` flag to ``size``:" +msgid "It is possible to compile Godot using size optimizations (instead of speed). To enable this, set the ``optimize`` flag to ``size``:" msgstr "" #: ../../docs/engine_details/development/compiling/optimizing_for_size.rst:88 diff --git a/sphinx/templates/engine_details/development/configuring_an_ide/android_studio.pot b/sphinx/templates/engine_details/development/configuring_an_ide/android_studio.pot index 4fea93e0e7..079b863fb3 100644 --- a/sphinx/templates/engine_details/development/configuring_an_ide/android_studio.pot +++ b/sphinx/templates/engine_details/development/configuring_an_ide/android_studio.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -148,7 +148,7 @@ msgid "Building & debugging the app module" msgstr "" #: ../../docs/engine_details/development/configuring_an_ide/android_studio.rst:78 -msgid "The ``app`` module requires the presence of a Godot project in its ``assets`` directory (``/platform/android/java/app/assets``) to run. This is usually handled by the Godot Editor during the export process. While developing in Android Studio, it's necessary to manually add a Godot project under that directory to replicate the export process. Once that's done, you can follow the instructions below to run/debug the ``app`` module:" +msgid "The ``app`` module requires the presence of a Godot project in its ``assets`` directory (``/platform/android/java/app/src/main/assets``) to run. This is usually handled by the Godot Editor during the export process. While developing in Android Studio, it's necessary to manually add a Godot project under that directory to replicate the export process. Once that's done, you can follow the instructions below to run/debug the ``app`` module:" msgstr "" #: ../../docs/engine_details/development/configuring_an_ide/android_studio.rst:83 diff --git a/sphinx/templates/engine_details/development/configuring_an_ide/clion.pot b/sphinx/templates/engine_details/development/configuring_an_ide/clion.pot index 218869be60..57b4691a2d 100644 --- a/sphinx/templates/engine_details/development/configuring_an_ide/clion.pot +++ b/sphinx/templates/engine_details/development/configuring_an_ide/clion.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/configuring_an_ide/code_blocks.pot b/sphinx/templates/engine_details/development/configuring_an_ide/code_blocks.pot index 9a206688ef..cea1e62f54 100644 --- a/sphinx/templates/engine_details/development/configuring_an_ide/code_blocks.pot +++ b/sphinx/templates/engine_details/development/configuring_an_ide/code_blocks.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/configuring_an_ide/index.pot b/sphinx/templates/engine_details/development/configuring_an_ide/index.pot index 393d6f26f3..02e97b2670 100644 --- a/sphinx/templates/engine_details/development/configuring_an_ide/index.pot +++ b/sphinx/templates/engine_details/development/configuring_an_ide/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/configuring_an_ide/kdevelop.pot b/sphinx/templates/engine_details/development/configuring_an_ide/kdevelop.pot index 4b16a87673..539fa0e4f3 100644 --- a/sphinx/templates/engine_details/development/configuring_an_ide/kdevelop.pot +++ b/sphinx/templates/engine_details/development/configuring_an_ide/kdevelop.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/configuring_an_ide/qt_creator.pot b/sphinx/templates/engine_details/development/configuring_an_ide/qt_creator.pot index f4bfc09ba8..368fa9795c 100644 --- a/sphinx/templates/engine_details/development/configuring_an_ide/qt_creator.pot +++ b/sphinx/templates/engine_details/development/configuring_an_ide/qt_creator.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/configuring_an_ide/rider.pot b/sphinx/templates/engine_details/development/configuring_an_ide/rider.pot index b74bac293e..11c9419ba1 100644 --- a/sphinx/templates/engine_details/development/configuring_an_ide/rider.pot +++ b/sphinx/templates/engine_details/development/configuring_an_ide/rider.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/configuring_an_ide/visual_studio.pot b/sphinx/templates/engine_details/development/configuring_an_ide/visual_studio.pot index 5ea6965502..d39eab9ce3 100644 --- a/sphinx/templates/engine_details/development/configuring_an_ide/visual_studio.pot +++ b/sphinx/templates/engine_details/development/configuring_an_ide/visual_studio.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/configuring_an_ide/visual_studio_code.pot b/sphinx/templates/engine_details/development/configuring_an_ide/visual_studio_code.pot index 0764736784..7db19e7f6d 100644 --- a/sphinx/templates/engine_details/development/configuring_an_ide/visual_studio_code.pot +++ b/sphinx/templates/engine_details/development/configuring_an_ide/visual_studio_code.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/configuring_an_ide/xcode.pot b/sphinx/templates/engine_details/development/configuring_an_ide/xcode.pot index 23aa3199a7..79c5afcdfb 100644 --- a/sphinx/templates/engine_details/development/configuring_an_ide/xcode.pot +++ b/sphinx/templates/engine_details/development/configuring_an_ide/xcode.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/debugging/index.pot b/sphinx/templates/engine_details/development/debugging/index.pot index e4cb43bc50..4f1f3c05b5 100644 --- a/sphinx/templates/engine_details/development/debugging/index.pot +++ b/sphinx/templates/engine_details/development/debugging/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/debugging/macos_debug.pot b/sphinx/templates/engine_details/development/debugging/macos_debug.pot index a8e7c213ea..6fc4d3f629 100644 --- a/sphinx/templates/engine_details/development/debugging/macos_debug.pot +++ b/sphinx/templates/engine_details/development/debugging/macos_debug.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/debugging/profiling/sampling_profilers.pot b/sphinx/templates/engine_details/development/debugging/profiling/sampling_profilers.pot new file mode 100644 index 0000000000..02c47f623e --- /dev/null +++ b/sphinx/templates/engine_details/development/debugging/profiling/sampling_profilers.pot @@ -0,0 +1,204 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine latest\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:4 +msgid "Sampling profilers" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:7 +msgid "Recommended profilers" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:9 +msgid "`VerySleepy `__ (Windows only)" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:10 +msgid "`HotSpot `__ (Linux only)" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:11 +msgid "`Xcode Instruments `__ (macOS only)" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:13 +msgid "These profilers may not be the most powerful or flexible options, but their standalone operation and limited feature set tends to make them easier to use." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:17 +msgid "Setting up Godot" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:19 +msgid "To get useful profiling information, it is **absolutely required** to use a Godot build that includes debugging symbols. Official binaries do not include debugging symbols, since these would make the download size significantly larger." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:23 +msgid "To get profiling data that best matches the production environment (but with debugging symbols), you should compile binaries with the ``production=yes debug_symbols=yes`` SCons options." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:26 +msgid "It is possible to run a profiler on less optimized builds (e.g. ``target=template_debug`` without LTO), but results will naturally be less representative of real world conditions." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:31 +msgid "Do *not* strip debugging symbols on the binaries using the ``strip`` command after compiling the binaries. Otherwise, you will no longer get useful profiling information when running a profiler." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:36 +msgid "Benchmarking startup/shutdown times" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:38 +msgid "If you're looking into optimizing Godot's startup/shutdown performance, you can tell the profiler to use the ``--quit`` command line option on the Godot binary. This will exit Godot just after it's done starting. The ``--quit`` option works with ``--editor``, ``--project-manager``, and ``--path `` (which runs a project directly)." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:46 +msgid "See :ref:`doc_command_line_tutorial` for more command line arguments supported by Godot." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:50 +msgid "Profiler-specific instructions" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:53 +msgid "VerySleepy" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:55 +msgid "Start the Godot editor or your project first. If you start the Project Manager, make sure to edit or run a project first. Otherwise, the profiler will not track the child process since the Project Manager will spawn a child process for every project edited or run." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:59 +msgid "Open VerySleepy and select the Godot executable in the list of processes on the left:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:63 +msgid "Click the **Profile All** button on the right to start profiling." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:64 +msgid "Perform the actions you wish to profile in the editor or project. When you're done, click **Stop** (*not* Abort)." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:65 +msgid "Wait for the results window to appear." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:66 +msgid "Once the results window appears, filter the view to remove external modules (such as the graphics driver). You can filter by module by finding a line whose **Module** matches the Godot executable name, right-clicking that line then choosing **Filter Module to ** in the dropdown that appears." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:70 +msgid "Your results window should now look something like this:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:75 +msgid "HotSpot" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:77 +msgid "Open HotSpot. Click **Record Data**:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:81 +msgid "In the next window, specify the path to the Godot binary that includes debug symbols." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:82 +msgid "Specify command line arguments to run a specific project, with or without the editor." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:83 +msgid "The path to the working directory can be anything if an absolute path is used for the ``--path`` command line argument. Otherwise, it must be set so that the relative path to the project is valid." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:86 +msgid "Make sure **Elevate Privileges** is checked if you have administrative privileges. While not essential for profiling Godot, this will ensure all events can be captured. Otherwise, some events may be missing from the capture. Your settings should now look something like this:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:93 +msgid "Click **Start Recording** and perform the actions you wish to profile in the editor/project." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:94 +msgid "Quit the editor/project normally or use the **Stop Profiling** button in HotSpot to stop profiling early. Stopping profiling early can result in cleaner profiles if you're not interested in the engine's shutdown procedure." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:97 +msgid "Click **View Results** and wait for the profiling visualization to be generated:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:101 +msgid "Use the tabs at the top to navigate between the different views. These views show the same data, but in different ways. The **Flame Graph** tab is a good way to see which functions take up the most time at a glance. These functions are therefore the most important ones to optimize, since optimizing them will improve performance the most." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:106 +msgid "At the bottom of all tabs except **Summary**, you will also see a list of CPU threads started by the engine along with the CPU utilization for each thread. This lets you see threads that can be a bottleneck at a given point in time." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:114 +msgid "If you don't want the startup procedure to be included in the profile, you can also attach HotSpot to a running process by clicking **Record Data** then setting the **Launch Application** dropdown option to **Attach To Process(es)**." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:119 +msgid "This process attachment-based workflow is similar to the one used by VerySleepy." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:122 +msgid "Xcode Instruments" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:124 +msgid "Open Xcode. Select **Open Developer Tool** - **Instruments** from the **Xcode** app menu:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:125 +msgid "Double-click on **Time Profiler** in the **Instruments** window:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:129 +msgid "In the Time Profiler window, click on the **Target** menu, select **Choose target...** and specify the path to the Godot binary, command line arguments, and environment variables in the next window." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:135 +msgid "You can also attach the Time Profiler to a running process by selecting it from the **Target** menu." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:138 +msgid "Click the **Start an immediate mode recording** button to start profiling." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:142 +msgid "Perform the actions you wish to profile in the editor or project. When you're done, click the **Stop** button." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:145 +msgid "Wait for the results to appear." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:146 +msgid "At the bottom of the window you will see a call tree for all CPU threads started, and the **Heaviest Stack Trace** overview." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:148 +msgid "Select **Hide system libraries** in the **Call Tree** menu (at the bottom of the window) to remove external modules." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:150 +msgid "You can use the timeline at the top of the window to display details for the specific time period." +msgstr "" diff --git a/sphinx/templates/engine_details/development/debugging/profiling/tracing_profilers.pot b/sphinx/templates/engine_details/development/debugging/profiling/tracing_profilers.pot new file mode 100644 index 0000000000..12397a2bdf --- /dev/null +++ b/sphinx/templates/engine_details/development/debugging/profiling/tracing_profilers.pot @@ -0,0 +1,226 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine latest\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:4 +msgid "Tracing Profilers" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:6 +msgid "Godot currently supports two tracing profilers: `Tracy `__ and `Perfetto `__." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:9 +msgid "In order to use either of them, you'll need to build the engine from source. If you've never done this before, please read :ref:`these docs ` for the platform you want to profile on. You'll need to perform the same steps here, but with some additional arguments for ``scons``." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:18 +msgid "Tracy for Windows, Linux, and macOS" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:20 +msgid "Tracy is an Open Source profiler that runs on a wide variety of platforms, including Windows, Linux, and macOS. While it is primarily a tracing profiler, it can also periodically sample data like a :ref:`sampling profiler `, giving some of the benefits of both approaches." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:27 +msgid "Build Godot with Tracy support" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:29 +msgid "First, clone the latest version of the Tracy source code (\"0.13.0\" at the time of writing) using Git:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:36 +msgid "This will create a ``tracy`` directory - you can place this anywhere." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:38 +msgid "Next, build the release templates for your platform using ``scons``, but adding the ``profiler=tracy profiler_path=path/to/tracy`` arguments with the real path to the ``tracy`` directory, as well as ``debug_symbols=yes`` to allow Tracy's sampling features to work." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:45 +msgid "You don't have to build release templates, you could also build debug templates, or even the editor. However, it's generally recommended to profile release templates, because that is the version your players will use, and it will perform differently than other types of builds." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:50 +msgid "For example, to build release templates for Windows:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:57 +msgid "Get the Tracy \"server\"" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:59 +msgid "In Tracy terminology, the application you are profiling is the \"client\", and the one receiving the data is the \"server\"." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:62 +msgid "If you are on Windows, you can download a pre-built ``tracy-profiler.exe`` from the Tracy `releases page `_." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:65 +msgid "However, if you're on Linux or macOS, you'll either need to find a pre-built binary from a package manager (like ``brew`` or ``nix``), or build it from source yourself." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:71 +msgid "If you do use a pre-built binary, be sure to use the same version that you used when building Godot." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:75 +msgid "Build the Tracy server from source" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:77 +msgid "In order to build Tracy, you'll need to install ``cmake``, which can be downloaded from the `CMake website `_, or possibly installed via a package manager (like ``brew`` or ``nix``)." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:81 +msgid "The full instructions for building Tracy from source can be found in the `Tracy manual `_, but here is the TL;DR:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:91 +msgid "This will place the binary at ``tracy/profiler/build/tracy-profiler`` or ``tracy/profiler/build/tracy-profiler.exe`` (on Windows)." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:95 +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:198 +msgid "Record a trace" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:97 +msgid "Launch the Tracy server - you'll see something like this:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:101 +msgid "Press \"connect\". This will ensure tracy makes a connection immediately when the game launches. If you forget to press \"connect\", Tracy will store system events in RAM, which can quickly blow up your memory usage (see the ``TRACY_ON_DEMAND`` documentation)." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:106 +msgid "Now, export your game using the release templates you built above, and run it. As soon as both are running, and you have pressed the \"Connect\" button in Tracy, you'll see data coming in:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:112 +msgid "When you think you've gathered enough data, press the \"Stop\" button. If you clicked somewhere and the box with the \"Stop\" button disappeared, you can click the top-left most icon to bring it back." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:117 +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:216 +msgid "Examining the trace" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:119 +msgid "Here are some of the basic controls:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:121 +msgid "Zoom in/out with the mouse wheel" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:122 +msgid "Right click and drag to move forward/backward on the timeline" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:123 +msgid "In the top bar, click the left and right arrow buttons by \"Frames\" to move a single frame on the timeline" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:125 +msgid "To learn more, see the `Tracy manual `_." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:129 +msgid "Perfetto for Android" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:131 +msgid "Perfetto is the default tracing system for Android. In fact, its system tracing service has been built into the platform since Android 9." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:135 +msgid "Build Godot with Perfetto support" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:137 +msgid "First, clone the latest version of the Perfetto source code (\"53.0\" at the time of writing) using Git:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:144 +msgid "This will create a ``perfetto`` directory - you can place this anywhere." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:146 +msgid "Next, build the Android debug or release templates for your architecture using ``scons`` (per :ref:`Compiling for Android `), but adding the ``profiler=perfetto profiler_path=path/to/perfetto`` arguments with the real path to the ``perfetto`` directory." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:153 +msgid "It's generally recommended to profile release templates, because that is the version your players will use, and it will perform differently than other types of builds. However, in the case of Android, it can sometimes be useful to use debug templates, because Godot can only do remote debugging of games exported from debug templates." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:159 +msgid "For example, to build the release templates for arm64:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:166 +msgid "Configuration" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:168 +msgid "Perfetto requires a configuration file to tell it which events to track." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:170 +msgid "Create a file called ``godot.config`` inside of the ``perfetto`` directory with this content:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:200 +msgid "Finally, launch your game on an Android device using the export templates you built earlier." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:203 +msgid "When you're ready to record a trace (for example, when you've hit the part of your game that is exhibiting performance issues), you can use this script that comes with the Perfetto source code:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:212 +msgid "This will record for 10 seconds (per the configuration), or until you press :kbd:`Ctrl + C`." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:218 +msgid "As soon as that script exits, it will launch the Perfetto UI in a web browser." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:220 +msgid "To see the Godot events, expand the row for your application by clicking on its Android \"Unique Name\" (Perfetto will also include some events from system services in the trace)." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:226 +msgid "Then you can use the ``WASD`` keys to navigate the graph:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:228 +msgid "Press :kbd:`A` or :kbd:`D` to navigate forward or backward along the timeline" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:229 +msgid "Press :kbd:`W` or :kbd:`S` to zoom in or out" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:231 +msgid "You'll probably need to zoom a bit before you're able to see the individual events from Godot." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:234 +msgid "To learn more, see the `Perfetto UI documentation `_." +msgstr "" diff --git a/sphinx/templates/engine_details/development/debugging/using_cpp_profilers.pot b/sphinx/templates/engine_details/development/debugging/using_cpp_profilers.pot index bd001e251a..37392dc06b 100644 --- a/sphinx/templates/engine_details/development/debugging/using_cpp_profilers.pot +++ b/sphinx/templates/engine_details/development/debugging/using_cpp_profilers.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -27,186 +27,22 @@ msgstr "" msgid "There is a :ref:`built-in GDScript profiler ` in the editor, but using C++ profiler may be useful in cases where the GDScript profiler is not accurate enough or is missing information due to bugs in the profiler." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:16 -msgid "Recommended profilers" +#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:15 +msgid "There are two main types of profilers: sampling profilers and tracing profilers." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:18 -msgid "`VerySleepy `__ (Windows only)" +#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:17 +msgid "Sampling profilers periodically interrupt the running program and take a \"sample\", which records which functions are running. Using this information, the profiler estimates which functions the program spent the most time in." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:19 -msgid "`HotSpot `__ (Linux only)" +#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:21 +msgid "Tracing profilers work by recording application-specific events (such as the start and end of a single frame), producing a log called a \"trace\". The profiler can use the trace to produce a graph showing an accurate high-level timeline of what happened. However, any code that is not explicitly instrumented will not appear in a tracing profiler's timeline!" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:20 -msgid "`Xcode Instruments `__ (macOS only)" +#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:27 +msgid "Godot supports both sampling profilers and tracing profilers, and already includes the logging code for common Godot events for use with a tracing profiler!" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:22 -msgid "These profilers may not be the most powerful or flexible options, but their standalone operation and limited feature set tends to make them easier to use." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:26 -msgid "Setting up Godot" -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:28 -msgid "To get useful profiling information, it is **absolutely required** to use a Godot build that includes debugging symbols. Official binaries do not include debugging symbols, since these would make the download size significantly larger." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:32 -msgid "To get profiling data that best matches the production environment (but with debugging symbols), you should compile binaries with the ``production=yes debug_symbols=yes`` SCons options." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:35 -msgid "It is possible to run a profiler on less optimized builds (e.g. ``target=template_debug`` without LTO), but results will naturally be less representative of real world conditions." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:40 -msgid "Do *not* strip debugging symbols on the binaries using the ``strip`` command after compiling the binaries. Otherwise, you will no longer get useful profiling information when running a profiler." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:45 -msgid "Benchmarking startup/shutdown times" -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:47 -msgid "If you're looking into optimizing Godot's startup/shutdown performance, you can tell the profiler to use the ``--quit`` command line option on the Godot binary. This will exit Godot just after it finished starting. The ``--quit`` option works with ``--editor``, ``--project-manager`` or ``--path `` (which runs a project directly)." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:55 -msgid "See :ref:`doc_command_line_tutorial` for more command line arguments supported by Godot." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:59 -msgid "Profiler-specific instructions" -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:62 -msgid "VerySleepy" -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:64 -msgid "Start the Godot editor or your project first. If you start the Project Manager, make sure to edit or run a project first. Otherwise, the profiler will not track the child process since the Project Manager will spawn a child process for every project edited or run." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:68 -msgid "Open VerySleepy and select the Godot executable in the list of processes on the left:" -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:72 -msgid "Click the **Profile All** button on the right to start profiling." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:73 -msgid "Perform the actions you wish to profile in the editor or project. When you're done, click **Stop** (*not* Abort)." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:74 -msgid "Wait for the results window to appear." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:75 -msgid "Once the results window appears, filter the view to remove external modules (such as the graphics driver). You can filter by module by finding a line whose **Module** matches the Godot executable name, right-clicking that line then choosing **Filter Module to ** in the dropdown that appears." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:79 -msgid "Your results window should now look something like this:" -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:84 -msgid "HotSpot" -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:86 -msgid "Open HotSpot. Click **Record Data**:" -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:90 -msgid "In the next window, specify the path to the Godot binary that includes debug symbols." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:91 -msgid "Specify command line arguments to run a specific project, with or without the editor." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:92 -msgid "The path to the working directory can be anything if an absolute path is used for the ``--path`` command line argument. Otherwise, it must be set to that the relative path to the project is valid." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:95 -msgid "Make sure **Elevate Privileges** is checked if you have administrative privileges. While not essential for profiling Godot, this will ensure all events can be captured. Otherwise, some events may be missing in the capture. Your settings should now look something like this:" -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:102 -msgid "Click **Start Recording** and perform the actions you wish to profile in the editor/project." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:103 -msgid "Quit the editor/project normally or use the **Stop Profiling** button in HotSpot to stop profiling early. Stopping profiling early can result in cleaner profiles if you're not interested in the engine's quit procedure." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:106 -msgid "Click **View Results** and wait for the profiling visualization to be generated:" -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:110 -msgid "Use the tabs at the top to navigate between the different views. These views show the same data, but in different ways. The **Flame Graph** tab is a good way to see which functions take up the most time at a glance. These functions are therefore the most important ones to optimize, since optimizing them will improve performance the most." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:115 -msgid "At the bottom of all tabs except **Summary**, you will also see a list of CPU threads started by the engine among with the CPU utilization for each thread. This lets you see threads that can be a bottleneck at a given point in time." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:123 -msgid "If you don't want the startup procedure to be included in the profile, you can also attach HotSpot to a running process by clicking **Record Data** then setting the **Launch Application** dropdown option to **Attach To Process(es)**." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:128 -msgid "This process attachment-based workflow is similar to the one used by VerySleepy." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:131 -msgid "Xcode Instruments" -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:133 -msgid "Open Xcode. Select **Open Developer Tool** - **Instruments** from the **Xcode** app menu:" -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:134 -msgid "Double-click on **Time Profiler** in the **Instruments** window:" -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:138 -msgid "In the Time Profiler window, click on the **Target** menu, select **Choose target...** and specify the path to the Godot binary, command line arguments and environment variables in the next window." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:144 -msgid "You can also attach the Time Profiler to a running process by selecting it from the **Target** menu." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:147 -msgid "Click the **Start an immediate mode recording** button to start profiling." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:151 -msgid "Perform the actions you wish to profile in the editor or project. When you're done, click the **Stop** button." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:154 -msgid "Wait for the results to appear." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:155 -msgid "At the bottom of the window you will see a call tree for all CPU threads started, and the **Heaviest Stack Trace** overview." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:157 -msgid "Select **Hide system libraries** in the **Call Tree** menu (at the bottom of window) to remove external modules." -msgstr "" - -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:159 -msgid "You can use the timeline at the top of the window to display details for the specific time period." +#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:30 +msgid "Different problems may be easier to debug with one kind of profiler over the other, but it's difficult to provide a set of rules for which to use. Give both a try, and see what you can learn from them!" msgstr "" diff --git a/sphinx/templates/engine_details/development/debugging/using_sanitizers.pot b/sphinx/templates/engine_details/development/debugging/using_sanitizers.pot index 4aaa641053..96f0c48b06 100644 --- a/sphinx/templates/engine_details/development/debugging/using_sanitizers.pot +++ b/sphinx/templates/engine_details/development/debugging/using_sanitizers.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/debugging/vulkan/index.pot b/sphinx/templates/engine_details/development/debugging/vulkan/index.pot index 657ff761a9..4ff9844102 100644 --- a/sphinx/templates/engine_details/development/debugging/vulkan/index.pot +++ b/sphinx/templates/engine_details/development/debugging/vulkan/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/development/debugging/vulkan/vulkan_validation_layers.pot b/sphinx/templates/engine_details/development/debugging/vulkan/vulkan_validation_layers.pot index 30362690bc..c84d7f064c 100644 --- a/sphinx/templates/engine_details/development/debugging/vulkan/vulkan_validation_layers.pot +++ b/sphinx/templates/engine_details/development/debugging/vulkan/vulkan_validation_layers.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -112,30 +112,30 @@ msgstr "" msgid "After installing the package, run Godot with the ``--gpu-validation`` :ref:`command line argument `. You can also specify ``--gpu-abort`` which will make Godot quit as soon as a validation error happens. This can prevent your system from freezing if a validation error occurs." msgstr "" -#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:135 -msgid "Android" -msgstr "" - -#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:137 -msgid "After enabling validation layers on Android, a developer can see errors and warning messages in the ``adb logcat`` output." -msgstr "" - -#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:141 +#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:133 msgid "iOS" msgstr "" -#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:143 +#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:135 msgid "Validation layers are currently **not** supported on iOS." msgstr "" -#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:146 +#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:138 msgid "Web" msgstr "" -#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:148 +#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:140 msgid "Validation layers are **not** supported on the web platform, as there is no support for Vulkan there." msgstr "" +#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:146 +msgid "Android" +msgstr "" + +#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:148 +msgid "After enabling validation layers on Android, a developer can see errors and warning messages in the ``adb logcat`` output." +msgstr "" + #: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:152 msgid "Enabling validation layers" msgstr "" diff --git a/sphinx/templates/engine_details/development/handling_compatibility_breakages.pot b/sphinx/templates/engine_details/development/handling_compatibility_breakages.pot index d8489d9d77..c00f7ba18e 100644 --- a/sphinx/templates/engine_details/development/handling_compatibility_breakages.pot +++ b/sphinx/templates/engine_details/development/handling_compatibility_breakages.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -64,25 +64,49 @@ msgid "core/math/a_star_grid_2d.cpp" msgstr "" #: ../../docs/engine_details/development/handling_compatibility_breakages.rst:117 -msgid "And finally, the changes reported by the API validation step should be added to the relevant validation file. Because this was done during the development of 4.3, this would be ``misc/extension_api_validation/4.2-stable.expected`` (including changes not shown in this example):" +msgid "Finally, the GDExtension API changes need to be recorded. To do this, first compile Godot on the ``master`` branch, and then run it with the ``--dump-extension-api`` flag:" msgstr "" -#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:121 -msgid "misc/extension_api_validation/4.2-stable.expected" +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:126 +msgid "This will create a file named ``extension_api.json`` in your current directory. Switch to your feature branch, recompile Godot, and then run it with the ``--validate-extension-api`` flag followed by the path to the ``extension_api.json`` file you just generated:" msgstr "" -#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:136 -msgid "The instructions for how to add to that file are at the top of the file itself." +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:135 +msgid "This will generate some lines starting with ``Validate extension JSON`` like so:" msgstr "" -#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:138 -msgid "If you get a \"Hash changed\" error for a method, it means that the compatibility binding is missing or incorrect. Such lines shouldn't be added to the ``.expected`` file, but fixed by binding the proper compatibility method." +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:148 +msgid "If you get a ``Hash changed`` error for a method, it means that the compatibility binding is missing or incorrect. Such lines shouldn't be added to the validation file, but fixed by binding the proper compatibility method. Make sure to double-check the following:" msgstr "" -#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:141 -msgid "And that's it! You might run into a bit more complicated cases, like rearranging arguments, changing return types, etc., but this covers the basic on how to use this system." +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:152 +msgid "For the compatibility method (the one whose name ends with the PR number), the argument types, names, and default values must be identical to the version of the method from before your changes." msgstr "" -#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:144 +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:154 +msgid "In ``_bind_compatibility_methods()``, argument names provided to the ``D_METHOD()`` macro in ``ClassDB::bind_compatibility_method()`` must be identical to those from the ``ClassDB::bind_method()`` call for the original method." +msgstr "" + +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:157 +msgid "Add these lines, followed by a comment explaining what the API change was and the actions taken to prevent breakage, to a validation file named after the GitHub pull request ID and placed in the folder of the Godot version it would have broken compatibility for." +msgstr "" + +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:160 +msgid "Since this example was for PR #88047, its file name would be ``GH-88047.txt``, and because this was done during the development of 4.3 (thus changing from 4.2), the file would be in the ``misc/extension_api_validation/4.2-stable/`` folder." +msgstr "" + +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:163 +msgid "See below for a complete example of such a file for this PR:" +msgstr "" + +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:165 +msgid "misc/extension_api_validation/4.2-stable/GH-88047.txt" +msgstr "" + +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:180 +msgid "And that's it! You might run into a bit more complicated cases, like rearranging arguments, changing return types, etc., but this covers the basics on how to use this system." +msgstr "" + +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:183 msgid "For more information, see `pull request #76446 `_." msgstr "" diff --git a/sphinx/templates/engine_details/development/index.pot b/sphinx/templates/engine_details/development/index.pot index 40c3a70e2c..8028bfad2d 100644 --- a/sphinx/templates/engine_details/development/index.pot +++ b/sphinx/templates/engine_details/development/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/editor/creating_icons.pot b/sphinx/templates/engine_details/editor/creating_icons.pot index fd5fee15b6..e26d6c7dd9 100644 --- a/sphinx/templates/engine_details/editor/creating_icons.pot +++ b/sphinx/templates/engine_details/editor/creating_icons.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/editor/index.pot b/sphinx/templates/engine_details/editor/index.pot index 1d06c7a910..264fdc242a 100644 --- a/sphinx/templates/engine_details/editor/index.pot +++ b/sphinx/templates/engine_details/editor/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/editor/introduction_to_editor_development.pot b/sphinx/templates/engine_details/editor/introduction_to_editor_development.pot index a5195ab8cd..52ff6ef002 100644 --- a/sphinx/templates/engine_details/editor/introduction_to_editor_development.pot +++ b/sphinx/templates/engine_details/editor/introduction_to_editor_development.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -72,19 +72,19 @@ msgid "`editor/editor_node.cpp `__: Main Project Manager initialization file. Effectively the \"main scene\" of the Project Manager." +msgid "`editor/project_manager/project_manager.cpp `__: Main Project Manager initialization file. Effectively the \"main scene\" of the Project Manager." msgstr "" #: ../../docs/engine_details/editor/introduction_to_editor_development.rst:51 -msgid "`editor/plugins/canvas_item_editor_plugin.cpp `__: The 2D editor viewport and related functionality (toolbar at the top, editing modes, overlaid helpers/panels, …)." +msgid "`editor/scene/canvas_item_editor_plugin.cpp `__: The 2D editor viewport and related functionality (toolbar at the top, editing modes, overlaid helpers/panels, …)." msgstr "" #: ../../docs/engine_details/editor/introduction_to_editor_development.rst:53 -msgid "`editor/plugins/node_3d_editor_plugin.cpp `__: The 3D editor viewport and related functionality (toolbar at the top, editing modes, overlaid panels, …)." +msgid "`editor/scene/3d/node_3d_editor_plugin.cpp `__: The 3D editor viewport and related functionality (toolbar at the top, editing modes, overlaid panels, …)." msgstr "" #: ../../docs/engine_details/editor/introduction_to_editor_development.rst:55 -msgid "`editor/plugins/node_3d_editor_gizmos.cpp `__: Where the 3D editor gizmos are defined and drawn. This file doesn't have a 2D counterpart as 2D gizmos are drawn by the nodes themselves." +msgid "`editor/scene/3d/node_3d_editor_gizmos.cpp `__: Where the 3D editor gizmos are defined and drawn. This file doesn't have a 2D counterpart as 2D gizmos are drawn by the nodes themselves." msgstr "" #: ../../docs/engine_details/editor/introduction_to_editor_development.rst:60 diff --git a/sphinx/templates/engine_details/file_formats/gdscript_grammar.pot b/sphinx/templates/engine_details/file_formats/gdscript_grammar.pot index ac6d95f8e8..f9b8c3d317 100644 --- a/sphinx/templates/engine_details/file_formats/gdscript_grammar.pot +++ b/sphinx/templates/engine_details/file_formats/gdscript_grammar.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/file_formats/index.pot b/sphinx/templates/engine_details/file_formats/index.pot index e68afe5513..df6f1544b0 100644 --- a/sphinx/templates/engine_details/file_formats/index.pot +++ b/sphinx/templates/engine_details/file_formats/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/engine_details/file_formats/tscn.pot b/sphinx/templates/engine_details/file_formats/tscn.pot index 093d907e17..9aaf1065e8 100644 --- a/sphinx/templates/engine_details/file_formats/tscn.pot +++ b/sphinx/templates/engine_details/file_formats/tscn.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_2d_game/01.project_setup.pot b/sphinx/templates/getting_started/first_2d_game/01.project_setup.pot index 23d342a011..023920257d 100644 --- a/sphinx/templates/getting_started/first_2d_game/01.project_setup.pot +++ b/sphinx/templates/getting_started/first_2d_game/01.project_setup.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_2d_game/02.player_scene.pot b/sphinx/templates/getting_started/first_2d_game/02.player_scene.pot index 5e517ca13d..e89eff3a98 100644 --- a/sphinx/templates/getting_started/first_2d_game/02.player_scene.pot +++ b/sphinx/templates/getting_started/first_2d_game/02.player_scene.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_2d_game/03.coding_the_player.pot b/sphinx/templates/getting_started/first_2d_game/03.coding_the_player.pot index 709eb42691..e3c981bcfa 100644 --- a/sphinx/templates/getting_started/first_2d_game/03.coding_the_player.pot +++ b/sphinx/templates/getting_started/first_2d_game/03.coding_the_player.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_2d_game/04.creating_the_enemy.pot b/sphinx/templates/getting_started/first_2d_game/04.creating_the_enemy.pot index 8f207de9fa..b3796745ab 100644 --- a/sphinx/templates/getting_started/first_2d_game/04.creating_the_enemy.pot +++ b/sphinx/templates/getting_started/first_2d_game/04.creating_the_enemy.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_2d_game/05.the_main_game_scene.pot b/sphinx/templates/getting_started/first_2d_game/05.the_main_game_scene.pot index dc5b768c91..44730a4dd2 100644 --- a/sphinx/templates/getting_started/first_2d_game/05.the_main_game_scene.pot +++ b/sphinx/templates/getting_started/first_2d_game/05.the_main_game_scene.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_2d_game/06.heads_up_display.pot b/sphinx/templates/getting_started/first_2d_game/06.heads_up_display.pot index 372f927ad6..bb1914f409 100644 --- a/sphinx/templates/getting_started/first_2d_game/06.heads_up_display.pot +++ b/sphinx/templates/getting_started/first_2d_game/06.heads_up_display.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_2d_game/07.finishing-up.pot b/sphinx/templates/getting_started/first_2d_game/07.finishing-up.pot index 078bebb110..b9291b7fb8 100644 --- a/sphinx/templates/getting_started/first_2d_game/07.finishing-up.pot +++ b/sphinx/templates/getting_started/first_2d_game/07.finishing-up.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_2d_game/index.pot b/sphinx/templates/getting_started/first_2d_game/index.pot index 7e03dbd620..40db702df4 100644 --- a/sphinx/templates/getting_started/first_2d_game/index.pot +++ b/sphinx/templates/getting_started/first_2d_game/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -27,7 +27,7 @@ msgstr "" msgid "|image0|" msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:79 +#: ../../docs/getting_started/first_2d_game/index.rst:80 msgid "image0" msgstr "" @@ -88,33 +88,37 @@ msgid "You can find a completed version of this project at this location:" msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:45 -msgid "https://github.com/godotengine/godot-demo-projects/tree/master/2d/dodge_the_creeps" +msgid "`Dodge the Creeps source code (GDScript) `__" msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:48 +#: ../../docs/getting_started/first_2d_game/index.rst:46 +msgid "`Dodge the Creeps source code (C#) `__" +msgstr "" + +#: ../../docs/getting_started/first_2d_game/index.rst:49 msgid "Prerequisites" msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:50 +#: ../../docs/getting_started/first_2d_game/index.rst:51 msgid "This step-by-step tutorial is intended for beginners who followed the complete :ref:`doc_step_by_step`." msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:53 +#: ../../docs/getting_started/first_2d_game/index.rst:54 msgid "If you're an experienced programmer, you can find the complete demo's source code here: `Dodge the Creeps source code `__." msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:57 +#: ../../docs/getting_started/first_2d_game/index.rst:58 msgid "We prepared some game assets you'll need to download so we can jump straight to the code." msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:60 +#: ../../docs/getting_started/first_2d_game/index.rst:61 msgid "You can download them by clicking the link below." msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:62 +#: ../../docs/getting_started/first_2d_game/index.rst:63 msgid "`dodge_the_creeps_2d_assets.zip `_." msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:65 +#: ../../docs/getting_started/first_2d_game/index.rst:66 msgid "Contents" msgstr "" diff --git a/sphinx/templates/getting_started/first_3d_game/01.game_setup.pot b/sphinx/templates/getting_started/first_3d_game/01.game_setup.pot index 279cdeff28..3e680ba7cc 100644 --- a/sphinx/templates/getting_started/first_3d_game/01.game_setup.pot +++ b/sphinx/templates/getting_started/first_3d_game/01.game_setup.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_3d_game/02.player_input.pot b/sphinx/templates/getting_started/first_3d_game/02.player_input.pot index 6dd797fa81..afc1352f72 100644 --- a/sphinx/templates/getting_started/first_3d_game/02.player_input.pot +++ b/sphinx/templates/getting_started/first_3d_game/02.player_input.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_3d_game/03.player_movement_code.pot b/sphinx/templates/getting_started/first_3d_game/03.player_movement_code.pot index aad4507979..3e55e032e0 100644 --- a/sphinx/templates/getting_started/first_3d_game/03.player_movement_code.pot +++ b/sphinx/templates/getting_started/first_3d_game/03.player_movement_code.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -248,7 +248,7 @@ msgid "image8" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:417 -msgid "You can run the scene by pressing :kbd:`F6` and press the arrow keys to move the character." +msgid "You can run the scene by pressing :kbd:`F6` (:kbd:`Cmd + R` on macOS) and press the arrow keys to move the character." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:420 diff --git a/sphinx/templates/getting_started/first_3d_game/04.mob_scene.pot b/sphinx/templates/getting_started/first_3d_game/04.mob_scene.pot index d335b3f570..878fde828b 100644 --- a/sphinx/templates/getting_started/first_3d_game/04.mob_scene.pot +++ b/sphinx/templates/getting_started/first_3d_game/04.mob_scene.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_3d_game/05.spawning_mobs.pot b/sphinx/templates/getting_started/first_3d_game/05.spawning_mobs.pot index f57307936b..13f6a266fd 100644 --- a/sphinx/templates/getting_started/first_3d_game/05.spawning_mobs.pot +++ b/sphinx/templates/getting_started/first_3d_game/05.spawning_mobs.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -440,7 +440,7 @@ msgid "Here is the complete ``main.gd`` script so far, for reference." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:338 -msgid "You can test the scene by pressing :kbd:`F6`. You should see the monsters spawn and move in a straight line." +msgid "You can test the scene by pressing :kbd:`F6` (:kbd:`Cmd + R` on macOS). You should see the monsters spawn and move in a straight line." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:341 diff --git a/sphinx/templates/getting_started/first_3d_game/06.jump_and_squash.pot b/sphinx/templates/getting_started/first_3d_game/06.jump_and_squash.pot index 78e0aea84c..1a3f2a3a68 100644 --- a/sphinx/templates/getting_started/first_3d_game/06.jump_and_squash.pot +++ b/sphinx/templates/getting_started/first_3d_game/06.jump_and_squash.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_3d_game/07.killing_player.pot b/sphinx/templates/getting_started/first_3d_game/07.killing_player.pot index f38b5f1b34..fb0a1ff37e 100644 --- a/sphinx/templates/getting_started/first_3d_game/07.killing_player.pot +++ b/sphinx/templates/getting_started/first_3d_game/07.killing_player.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_3d_game/08.score_and_replay.pot b/sphinx/templates/getting_started/first_3d_game/08.score_and_replay.pot index 64cd0935b2..5f4349d76d 100644 --- a/sphinx/templates/getting_started/first_3d_game/08.score_and_replay.pot +++ b/sphinx/templates/getting_started/first_3d_game/08.score_and_replay.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_3d_game/09.adding_animations.pot b/sphinx/templates/getting_started/first_3d_game/09.adding_animations.pot index f89a3ee6c4..c45f49142b 100644 --- a/sphinx/templates/getting_started/first_3d_game/09.adding_animations.pot +++ b/sphinx/templates/getting_started/first_3d_game/09.adding_animations.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_3d_game/going_further.pot b/sphinx/templates/getting_started/first_3d_game/going_further.pot index 07818aa34f..5addbb7b31 100644 --- a/sphinx/templates/getting_started/first_3d_game/going_further.pot +++ b/sphinx/templates/getting_started/first_3d_game/going_further.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/first_3d_game/index.pot b/sphinx/templates/getting_started/first_3d_game/index.pot index bb5d747e27..e751ca28a8 100644 --- a/sphinx/templates/getting_started/first_3d_game/index.pot +++ b/sphinx/templates/getting_started/first_3d_game/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -27,7 +27,7 @@ msgstr "" msgid "|image0|" msgstr "" -#: ../../docs/getting_started/first_3d_game/index.rst:72 +#: ../../docs/getting_started/first_3d_game/index.rst:74 msgid "image0" msgstr "" @@ -68,21 +68,29 @@ msgid "And more." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:32 -msgid "This tutorial is for beginners who followed the complete getting started series. We'll start slow with detailed instructions and shorten them as we do similar steps. If you're an experienced programmer, you can browse the complete demo's source code here: `Squash the Creep source code `__." +msgid "This tutorial is for beginners who followed the complete getting started series. We'll start slow with detailed instructions and shorten them as we do similar steps. If you're an experienced programmer, you can browse the complete demo's source code here:" msgstr "" -#: ../../docs/getting_started/first_3d_game/index.rst:40 +#: ../../docs/getting_started/first_3d_game/index.rst:37 +msgid "`Squash the Creeps source code (GDScript) `__" +msgstr "" + +#: ../../docs/getting_started/first_3d_game/index.rst:38 +msgid "`Squash the Creeps source code (C#) `__" +msgstr "" + +#: ../../docs/getting_started/first_3d_game/index.rst:42 msgid "You can follow this series without having done the 2D one. However, if you're new to game development, we recommend you to start with 2D. 3D game code is always more complex and the 2D series will give you foundations to follow along more comfortably." msgstr "" -#: ../../docs/getting_started/first_3d_game/index.rst:45 +#: ../../docs/getting_started/first_3d_game/index.rst:47 msgid "We prepared some game assets so we can jump straight to the code. You can download them here: `Squash the Creeps assets `__." msgstr "" -#: ../../docs/getting_started/first_3d_game/index.rst:49 +#: ../../docs/getting_started/first_3d_game/index.rst:51 msgid "We will first work on a basic prototype for the player's movement. We will then add the monsters that we'll spawn randomly around the screen. After that, we'll implement the jump and squashing mechanic before refining the game with some nice animation. We'll wrap up with the score and the retry screen." msgstr "" -#: ../../docs/getting_started/first_3d_game/index.rst:55 +#: ../../docs/getting_started/first_3d_game/index.rst:57 msgid "Contents" msgstr "" diff --git a/sphinx/templates/getting_started/introduction/first_look_at_the_editor.pot b/sphinx/templates/getting_started/introduction/first_look_at_the_editor.pot index 1926314b10..f00962f4f9 100644 --- a/sphinx/templates/getting_started/introduction/first_look_at_the_editor.pot +++ b/sphinx/templates/getting_started/introduction/first_look_at_the_editor.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/introduction/godot_design_philosophy.pot b/sphinx/templates/getting_started/introduction/godot_design_philosophy.pot index d80276fd1a..4f8ade8e12 100644 --- a/sphinx/templates/getting_started/introduction/godot_design_philosophy.pot +++ b/sphinx/templates/getting_started/introduction/godot_design_philosophy.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/introduction/index.pot b/sphinx/templates/getting_started/introduction/index.pot index 1c465b89b0..df0053da73 100644 --- a/sphinx/templates/getting_started/introduction/index.pot +++ b/sphinx/templates/getting_started/introduction/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/introduction/introduction_to_godot.pot b/sphinx/templates/getting_started/introduction/introduction_to_godot.pot index 84402dde9a..67b1e78f18 100644 --- a/sphinx/templates/getting_started/introduction/introduction_to_godot.pot +++ b/sphinx/templates/getting_started/introduction/introduction_to_godot.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -120,17 +120,13 @@ msgid "Godot relies on the object-oriented programming paradigm. Being comfortab msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:114 -msgid "If you are entirely new to programming, we recommend following the `CS50 open courseware`_ from Harvard University. It's a great free course that will teach you everything you need to know to be off to a good start. It will save you countless hours and hurdles learning any game engine afterward." +msgid "If you are entirely new to programming, GDQuest's *Learn GDScript From Zero* is a free and open source interactive tutorial for absolute beginners to learn to program with Godot's GDScript language. It is available as a `desktop application `__ or `in the browser `__." msgstr "" -#: ../../docs/getting_started/introduction/introduction_to_godot.rst:119 -msgid "In CS50, you will learn multiple programming languages. Don't be afraid of that: programming languages have many similarities. The skills you learn with one language transfer well to others." -msgstr "" - -#: ../../docs/getting_started/introduction/introduction_to_godot.rst:123 +#: ../../docs/getting_started/introduction/introduction_to_godot.rst:120 msgid "We will provide you with more Godot-specific learning resources in :ref:`doc_learning_new_features`." msgstr "" -#: ../../docs/getting_started/introduction/introduction_to_godot.rst:126 +#: ../../docs/getting_started/introduction/introduction_to_godot.rst:123 msgid "In the next part, you will get an overview of the engine's essential concepts." msgstr "" diff --git a/sphinx/templates/getting_started/introduction/key_concepts_overview.pot b/sphinx/templates/getting_started/introduction/key_concepts_overview.pot index e6db178258..c2c48786d6 100644 --- a/sphinx/templates/getting_started/introduction/key_concepts_overview.pot +++ b/sphinx/templates/getting_started/introduction/key_concepts_overview.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/introduction/learn_to_code_with_gdscript.pot b/sphinx/templates/getting_started/introduction/learn_to_code_with_gdscript.pot index 57637f411f..ad4cc91a5d 100644 --- a/sphinx/templates/getting_started/introduction/learn_to_code_with_gdscript.pot +++ b/sphinx/templates/getting_started/introduction/learn_to_code_with_gdscript.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/introduction/learning_new_features.pot b/sphinx/templates/getting_started/introduction/learning_new_features.pot index 52a998742f..d32159089a 100644 --- a/sphinx/templates/getting_started/introduction/learning_new_features.pot +++ b/sphinx/templates/getting_started/introduction/learning_new_features.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -76,73 +76,73 @@ msgid "Teaching programming foundations and how to think like a game developer i msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:69 -msgid "Harvard university offers a free courseware to learn to program, `CS50 `_. It will teach you programming fundamentals, how code works, and how to think like a programmer. These skills are essential to become a game developer and learn any game engine efficiently. You can see this course as an investment that will save you time and trouble when you learn to create games." +msgid "GDQuest's *Learn GDScript From Zero* is a free and open source interactive tutorial for absolute beginners to learn to program with Godot's GDScript language. It is available as a `desktop application `__ or `in the browser `__." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:76 +#: ../../docs/getting_started/introduction/learning_new_features.rst:75 msgid "If you prefer books, check out the free ebook `Automate The Boring Stuff With Python `_ by Al Sweigart." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:80 +#: ../../docs/getting_started/introduction/learning_new_features.rst:79 msgid "Learning with the community" msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:82 +#: ../../docs/getting_started/introduction/learning_new_features.rst:81 msgid "Godot has a growing community of users. If you're stuck on a problem or need help to better understand how to achieve something, you can ask other users for help on one of the many `active communities `_." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:87 +#: ../../docs/getting_started/introduction/learning_new_features.rst:86 msgid "The best place to ask questions and find already answered ones is the official `Godot Forum `_. These responses show up in search engine results and get saved, allowing other users to benefit from discussions on the platform. Once you have asked a question there, you can share its link on other social platforms. Before asking a question, be sure to look for existing answers that might solve your problem on this website or using your preferred search engine." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:95 +#: ../../docs/getting_started/introduction/learning_new_features.rst:94 msgid "Asking questions well and providing details will help others answer you faster and better. When asking questions, we recommend including the following information:" msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:99 +#: ../../docs/getting_started/introduction/learning_new_features.rst:98 msgid "**Describe your goal**. You want to explain what you are trying to achieve design-wise. If you are having trouble figuring out how to make a solution work, there may be a different, easier solution that accomplishes the same goal." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:104 +#: ../../docs/getting_started/introduction/learning_new_features.rst:103 msgid "If there is an error involved, **share the exact error message**. You can copy the exact error message in the editor's Debugger bottom panel by clicking the Copy Error icon. Knowing what it says can help community members better identify how you triggered the error." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:109 +#: ../../docs/getting_started/introduction/learning_new_features.rst:108 msgid "If there is code involved, **share a code sample**. Other users won't be able to help you fix a problem without seeing your code. Share the code as text directly. To do so, you can copy and paste a short code snippet in a chat box, or use a website like `Pastebin `_ to share long files." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:115 +#: ../../docs/getting_started/introduction/learning_new_features.rst:114 msgid "**Share a screenshot** of your *Scene* dock along with your written code. Most of the code you write affects nodes in your scenes. As a result, you should think of those scenes as part of your source code." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:121 +#: ../../docs/getting_started/introduction/learning_new_features.rst:120 msgid "Also, please don't take a picture with your phone, the low quality and screen reflections can make it hard to understand the image. Your operating system should have a built-in tool to take screenshots with the :kbd:`PrtSc` (Print Screen) key (macOS: use :kbd:`Cmd + Shift + 3` for a full screen shot, `more information here `_)." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:127 +#: ../../docs/getting_started/introduction/learning_new_features.rst:126 msgid "Alternatively, you can use a program like `ShareX `_ on Windows, or `Flameshot `_ on Windows/macOS/Linux." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:130 +#: ../../docs/getting_started/introduction/learning_new_features.rst:129 msgid "Sharing a video of your running game can also be really **useful to troubleshoot your game**. You can use programs like `OBS Studio `_ and `Screen to GIF `_ to capture your screen." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:135 +#: ../../docs/getting_started/introduction/learning_new_features.rst:134 msgid "You can then use a service like `streamable `_ or a cloud provider to upload and share your videos for free." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:138 +#: ../../docs/getting_started/introduction/learning_new_features.rst:137 msgid "If you're not using the stable version of Godot, please mention the version you're using. The answer can be different as available features and the interface evolve rapidly." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:142 +#: ../../docs/getting_started/introduction/learning_new_features.rst:141 msgid "Following these guidelines will maximize your chances of getting the answer you're looking for. They will save time both for you and the persons helping you." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:146 +#: ../../docs/getting_started/introduction/learning_new_features.rst:145 msgid "Community tutorials" msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:148 +#: ../../docs/getting_started/introduction/learning_new_features.rst:147 msgid "This manual aims to provide a comprehensive reference of Godot's features. Aside from the 2D and 3D getting started series, it does not contain tutorials to implement specific game genres. If you're looking for a tutorial about creating a role-playing game, a platformer, or other, please see :ref:`doc_community_tutorials`, which lists content made by the Godot community." msgstr "" diff --git a/sphinx/templates/getting_started/step_by_step/index.pot b/sphinx/templates/getting_started/step_by_step/index.pot index d5d773e06c..7be120548c 100644 --- a/sphinx/templates/getting_started/step_by_step/index.pot +++ b/sphinx/templates/getting_started/step_by_step/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/step_by_step/instancing.pot b/sphinx/templates/getting_started/step_by_step/instancing.pot index 2faf0e8401..09a384b09a 100644 --- a/sphinx/templates/getting_started/step_by_step/instancing.pot +++ b/sphinx/templates/getting_started/step_by_step/instancing.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/step_by_step/nodes_and_scenes.pot b/sphinx/templates/getting_started/step_by_step/nodes_and_scenes.pot index e30c467cb6..e61e72d9d9 100644 --- a/sphinx/templates/getting_started/step_by_step/nodes_and_scenes.pot +++ b/sphinx/templates/getting_started/step_by_step/nodes_and_scenes.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/step_by_step/scripting_first_script.pot b/sphinx/templates/getting_started/step_by_step/scripting_first_script.pot index c1e46d5535..f0eb8f5a47 100644 --- a/sphinx/templates/getting_started/step_by_step/scripting_first_script.pot +++ b/sphinx/templates/getting_started/step_by_step/scripting_first_script.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/step_by_step/scripting_languages.pot b/sphinx/templates/getting_started/step_by_step/scripting_languages.pot index 999b21ce8f..8df44a8f68 100644 --- a/sphinx/templates/getting_started/step_by_step/scripting_languages.pot +++ b/sphinx/templates/getting_started/step_by_step/scripting_languages.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/step_by_step/scripting_player_input.pot b/sphinx/templates/getting_started/step_by_step/scripting_player_input.pot index 5886edaf9c..0be42c44ed 100644 --- a/sphinx/templates/getting_started/step_by_step/scripting_player_input.pot +++ b/sphinx/templates/getting_started/step_by_step/scripting_player_input.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/getting_started/step_by_step/signals.pot b/sphinx/templates/getting_started/step_by_step/signals.pot index 46b7d75536..4a479fd035 100644 --- a/sphinx/templates/getting_started/step_by_step/signals.pot +++ b/sphinx/templates/getting_started/step_by_step/signals.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/index.pot b/sphinx/templates/index.pot index 1b7fcaff64..d8d734c2c2 100644 --- a/sphinx/templates/index.pot +++ b/sphinx/templates/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -40,7 +40,7 @@ msgid "Class reference" msgstr "" #: ../../docs/index.rst:4 -msgid "Godot Docs – *4.5* branch" +msgid "Godot Docs – *master* branch" msgstr "" #: ../../docs/index.rst:8 diff --git a/sphinx/templates/sphinx.pot b/sphinx/templates/sphinx.pot index 16c262763e..40ecbb8cb1 100644 --- a/sphinx/templates/sphinx.pot +++ b/sphinx/templates/sphinx.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/2d/2d_antialiasing.pot b/sphinx/templates/tutorials/2d/2d_antialiasing.pot index be1fc30551..344bb98a24 100644 --- a/sphinx/templates/tutorials/2d/2d_antialiasing.pot +++ b/sphinx/templates/tutorials/2d/2d_antialiasing.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/2d/2d_lights_and_shadows.pot b/sphinx/templates/tutorials/2d/2d_lights_and_shadows.pot index 051826f068..549a281a8f 100644 --- a/sphinx/templates/tutorials/2d/2d_lights_and_shadows.pot +++ b/sphinx/templates/tutorials/2d/2d_lights_and_shadows.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -144,257 +144,281 @@ msgid "Directional light" msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:117 -msgid "New in Godot 4.0 is the ability to have directional lighting in 2D. Directional lighting is used to represent sunlight or moonlight. Light rays are casted parallel to each other, as if the sun or moon was infinitely far away from the surface that is receiving the light." +msgid "Directional lighting is used to represent sunlight or moonlight. Light rays are casted parallel to each other, as if the sun or moon was infinitely far away from the surface that is receiving the light." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:122 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:121 msgid "DirectionalLight2D offers the following properties:" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:124 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:123 msgid "**Height:** The light's virtual height with regards to normal mapping (``0.0`` = parallel to surfaces, ``1.0`` = perpendicular to surfaces). By default, the light is fully parallel with the surfaces receiving lights. This will make lighting hardly visible if normal mapping is used, so consider increasing this value. Adjusting the light's height only makes a visual difference on surfaces that use normal mapping. **Height** does not affect shadows' appearance." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:130 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:129 msgid "**Max Distance:** The maximum distance from the camera center objects can be before their shadows are culled (in pixels). Decreasing this value can prevent objects located outside the camera from casting shadows (while also improving performance). Camera2D zoom is not taken into account by **Max Distance**, which means that at higher zoom values, shadows will appear to fade out sooner when zooming onto a given point." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:139 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:138 msgid "Directional shadows will always appear to be infinitely long, regardless of the value of the **Height** property. This is a limitation of the shadow rendering method used for 2D lights in Godot." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:143 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:142 msgid "To have directional shadows that are not infinitely long, you should disable shadows in the DirectionalLight2D and use a custom shader that reads from the 2D signed distance field instead. This distance field is automatically generated from LightOccluder2D nodes present in the scene." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:149 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:148 msgid "Common light properties" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:151 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:150 msgid "Both PointLight2D and DirectionalLight2D offer common properties, which are part of the Light2D base class:" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:154 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:153 msgid "**Enabled:** Allows toggling the light's visibility. Unlike hiding the light node, disabling this property will not hide the light's children." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:156 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:155 msgid "**Editor Only:** If enabled, the light is only visible within the editor. It will be automatically disabled in the running project." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:158 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:157 msgid "**Color:** The light's color." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:159 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:158 msgid "**Energy:** The light's intensity multiplier. Higher values result in a brighter light." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:160 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:159 msgid "**Blend Mode:** The blending formula used for light computations. The default **Add** is suited for most use cases. **Subtract** can be used for negative lights, which are not physically accurate but can be used for special effects. The **Mix** blend mode mixes the value of pixels corresponding to the light's texture with the values of pixels under it by linear interpolation." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:165 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:164 msgid "**Range > Z Min:** The lowest Z index affected by the light." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:166 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:165 msgid "**Range > Z Max:** The highest Z index affected by the light." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:167 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:166 msgid "**Range > Layer Min:** The lowest visual layer affected by the light." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:168 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:167 msgid "**Range > Layer Max:** The highest visual layer affected by the light." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:169 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:168 msgid "**Range > Item Cull Mask:** Controls which nodes receive light from this node, depending on the other nodes' enabled visual layers **Occluder Light Mask**. This can be used to prevent certain objects from receiving light." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:176 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:175 msgid "Setting up shadows" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:178 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:177 msgid "After enabling the **Shadow > Enabled** property on a PointLight2D or DirectionalLight2D node, you will not see any visual difference initially. This is because no nodes in your scene have any *occluders* yet, which are used as a basis for shadow casting." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:183 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:182 msgid "For shadows to appear in the scene, LightOccluder2D nodes must be added to the scene. These nodes must also have occluder polygons that are designed to match the sprite's outline." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:187 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:186 msgid "Along with their polygon resource (which must be set to have any visual effect), LightOccluder2D nodes have 2 properties:" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:190 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:189 msgid "**SDF Collision:** If enabled, the occluder will be part of a real-time generated *signed distance field* that can be used in custom shaders. When not using custom shaders that read from this SDF, enabling this makes no visual difference and has no performance cost, so this is enabled by default for convenience." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:195 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:194 msgid "**Occluder Light Mask:** This is used in tandem with PointLight2D and DirectionalLight2D's **Shadow > Item Cull Mask** property to control which objects cast shadows for each light. This can be used to prevent specific objects from casting shadows." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:200 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:199 msgid "There are two ways to create light occluders:" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:203 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:202 msgid "Automatically generating a light occluder" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:205 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:204 msgid "Occluders can be created automatically from Sprite2D nodes by selecting the node, clicking the **Sprite2D** menu at the top of the 2D editor then choosing **Create LightOccluder2D Sibling**." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:209 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:208 msgid "In the dialog that appears, an outline will surround your sprite's edges. If the outline matches the sprite's edges closely, you can click **OK**. If the outline is too far away from the sprite's edges (or is \"eating\" into the sprite's edges), adjust **Grow (pixels)** and **Shrink (pixels)**, then click **Update Preview**. Repeat this operation until you get satisfactory results." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:216 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:215 msgid "Manually drawing a light occluder" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:218 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:217 msgid "Create a LightOccluder2D node, then select the node and click the \"+\" button at the top of the 2D editor. When asked to create a polygon resource, answer **Yes**. You can then start drawing an occluder polygon by clicking to create new points. You can remove existing points by right-clicking them, and you can create new points from the existing line by clicking on the line then dragging." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:224 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:223 msgid "The following properties can be adjusted on 2D lights that have shadows enabled:" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:226 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:225 msgid "**Color:** The color of shaded areas. By default, shaded areas are fully black, but this can be changed for artistic purposes. The color's alpha channel controls how much the shadow is tinted by the specified color." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:229 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:228 msgid "**Filter:** The filter mode to use for shadows. The default **None** is the fastest to render, and is well suited for games with a pixel art aesthetic (due to its \"blocky\" visuals). If you want a soft shadow, use **PCF5** instead. **PCF13** is even softer, but is the most demanding to render. PCF13 should only be used for a few lights at once due to its high rendering cost." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:234 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:233 msgid "**Filter Smooth:** Controls how much softening is applied to shadows when **Filter** is set to **PCF5** or **PCF13**. Higher values result in a softer shadow, but may cause banding artifacts to be visible (especially with PCF5)." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:237 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:236 msgid "**Item Cull Mask:** Controls which LightOccluder2D nodes cast shadows, depending on their respective **Occluder Light Mask** properties." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:240 -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:244 -msgid "Hard shadows" +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:241 +msgid "**Lighting and shadow resolution in pixel-art games**" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:246 -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:250 -msgid "Soft shadows (PCF13, Filter Smooth 1.5)" +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:243 +msgid "The engine computes 2D lighting and shadows at the **Viewport's pixel resolution**, not at the source texture's texel resolution. The appearance of lights and shadows depends on your window or Viewport resolution, not on the resolution of individual sprite textures." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:252 -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:256 -msgid "Soft shadows with streaking artifacts due to Filter Smooth being too high (PCF5, Filter Smooth 4)" +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:248 +msgid "If you create a pixel-art game and want pixelated or blocky lighting and shadows that match your art style, **Nearest** texture filtering will **not** achieve this effect. Nearest filtering affects only how the engine samples textures — it does not change how the engine renders lighting and shadows." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:259 -msgid "Normal and specular maps" +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:253 +msgid "To achieve pixelated lighting and shadows, use a custom shader to modify ``LIGHT_VERTEX`` and ``SHADOW_VERTEX`` to snap light sampling to a pixel grid. The following shader snaps lighting to a grid using the ``floor()`` function:" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:261 -msgid "Normal maps and specular maps can greatly enhance the sense of depth of your 2D lighting. Similar to how these work in 3D rendering, normal maps can help make lighting look less flat by varying its intensity depending on the direction of the surface receiving light (on a per-pixel basis). Specular maps further help improve visuals by making some of the light reflect back to the viewer." -msgstr "" - -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:267 -msgid "Both PointLight2D and DirectionalLight2D support normal mapping and specular mapping. Since Godot 4.0, normal and specular maps can be assigned to any 2D element, including nodes that inherit from Node2D or Control." -msgstr "" - -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:271 -msgid "A normal map represents the direction in which each pixel is \"pointing\" towards. This information is then used by the engine to correctly apply lighting to 2D surfaces in a physically plausible way. Normal maps are typically created from hand-painted height maps, but they can also be automatically generated from other textures." +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:272 +msgid "This works by dividing the position by ``pixel_size`` to convert to grid space, using ``floor()`` to round down to the nearest grid point, then multiplying back to convert to screen space. The result forces the engine to sample lighting from discrete grid positions, which creates the pixelated effect." msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:277 -msgid "A specular map defines how much each pixel should reflect light (and in which color, if the specular map contains color). Brighter values will result in a brighter reflection at that given spot on the texture. Specular maps are typically created with manual editing, using the diffuse texture as a base." +msgid "For more information on canvas item shaders, see :ref:`CanvasItem shaders `." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:284 -msgid "If you don't have normal or specular maps for your sprites, you can generate them using the free and open source `Laigter `__ tool." +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:279 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:283 +msgid "Hard shadows" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:288 -msgid "To set up normal maps and/or specular maps on a 2D node, create a new CanvasTexture resource for the property that draws the node's texture. For example, on a Sprite2D:" +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:285 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:289 +msgid "Soft shadows (PCF13, Filter Smooth 1.5)" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:292 -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:296 -msgid "Creating a CanvasTexture resource for a Sprite2D node" +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:291 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:295 +msgid "Soft shadows with streaking artifacts due to Filter Smooth being too high (PCF5, Filter Smooth 4)" msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:298 -msgid "Expand the newly created resource. You can find several properties you will need to adjust:" +msgid "Normal and specular maps" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:301 -msgid "**Diffuse > Texture:** The base color texture. In this property, load the texture you're using for the sprite itself." +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:300 +msgid "Normal maps and specular maps can greatly enhance the sense of depth of your 2D lighting. Similar to how these work in 3D rendering, normal maps can help make lighting look less flat by varying its intensity depending on the direction of the surface receiving light (on a per-pixel basis). Specular maps further help improve visuals by making some of the light reflect back to the viewer." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:303 -msgid "**Normal Map > Texture:** The normal map texture. In this property, load a normal map texture you've generated from a height map (see the tip above)." -msgstr "" - -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:305 -msgid "**Specular > Texture:** The specular map texture, which controls the specular intensity of each pixel on the diffuse texture. The specular map is usually grayscale, but it can also contain color to multiply the color of reflections accordingly. In this property, load a specular map texture you've created (see the tip above)." +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:306 +msgid "Both PointLight2D and DirectionalLight2D support normal mapping and specular mapping. Normal and specular maps can be assigned to any 2D element, including nodes that inherit from Node2D or Control." msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:310 -msgid "**Specular > Color:** The color multiplier for specular reflections." +msgid "A normal map represents the direction in which each pixel is \"pointing\" towards. This information is then used by the engine to correctly apply lighting to 2D surfaces in a physically plausible way. Normal maps are typically created from hand-painted height maps, but they can also be automatically generated from other textures." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:311 -msgid "**Specular > Shininess:** The specular exponent to use for reflections. Lower values will increase the brightness of reflections and make them more diffuse, while higher values will make reflections more localized. High values are more suited for wet-looking surfaces." +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:316 +msgid "A specular map defines how much each pixel should reflect light (and in which color, if the specular map contains color). Brighter values will result in a brighter reflection at that given spot on the texture. Specular maps are typically created with manual editing, using the diffuse texture as a base." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:315 -msgid "**Texture > Filter:** Can be set to override the texture filtering mode, regardless of what the node's property is set to (or the **Rendering > Textures > Canvas Textures > Default Texture Filter** project setting)." +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:323 +msgid "If you don't have normal or specular maps for your sprites, you can generate them using the free and open source `Laigter `__ tool." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:319 -msgid "**Texture > Repeat:** Can be set to override the texture filtering mode, regardless of what the node's property is set to (or the **Rendering > Textures > Canvas Textures > Default Texture Repeat** project setting)." -msgstr "" - -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:324 -msgid "After enabling normal mapping, you may notice that your lights appear to be weaker. To resolve this, increase the **Height** property on your PointLight2D and DirectionalLight2D nodes. You may also want to increase the lights's **Energy** property slightly to get closer to how your lighting's intensity looked prior to enabling normal mapping." +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:327 +msgid "To set up normal maps and/or specular maps on a 2D node, create a new CanvasTexture resource for the property that draws the node's texture. For example, on a Sprite2D:" msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:331 -msgid "Using additive sprites as a faster alternative to 2D lights" -msgstr "" - -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:333 -msgid "If you run into performance issues when using 2D lights, it may be worth replacing some of them with Sprite2D nodes that use additive blending. This is particularly suited for short-lived dynamic effects, such as bullets or explosions." +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:335 +msgid "Creating a CanvasTexture resource for a Sprite2D node" msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:337 -msgid "Additive sprites are much faster to render, since they don't need to go through a separate rendering pipeline. Additionally, it is possible to use this approach with AnimatedSprite2D (or Sprite2D + AnimationPlayer), which allows for animated 2D \"lights\" to be created." +msgid "Expand the newly created resource. You can find several properties you will need to adjust:" +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:340 +msgid "**Diffuse > Texture:** The base color texture. In this property, load the texture you're using for the sprite itself." msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:342 -msgid "However, additive sprites have a few downsides compared to 2D lights:" +msgid "**Normal Map > Texture:** The normal map texture. In this property, load a normal map texture you've generated from a height map (see the tip above)." msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:344 -msgid "The blending formula is inaccurate compared to \"actual\" 2D lighting. This is usually not a problem in sufficiently lit areas, but this prevents additive sprites from correctly lighting up areas that are fully dark." +msgid "**Specular > Texture:** The specular map texture, which controls the specular intensity of each pixel on the diffuse texture. The specular map is usually grayscale, but it can also contain color to multiply the color of reflections accordingly. In this property, load a specular map texture you've created (see the tip above)." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:347 -msgid "Additive sprites cannot cast shadows, since they are not lights." -msgstr "" - -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:348 -msgid "Additive sprites ignore normal and specular maps used on other sprites." +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:349 +msgid "**Specular > Color:** The color multiplier for specular reflections." msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:350 +msgid "**Specular > Shininess:** The specular exponent to use for reflections. Lower values will increase the brightness of reflections and make them more diffuse, while higher values will make reflections more localized. High values are more suited for wet-looking surfaces." +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:354 +msgid "**Texture > Filter:** Can be set to override the texture filtering mode, regardless of what the node's property is set to (or the **Rendering > Textures > Canvas Textures > Default Texture Filter** project setting)." +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:358 +msgid "**Texture > Repeat:** Can be set to override the texture filtering mode, regardless of what the node's property is set to (or the **Rendering > Textures > Canvas Textures > Default Texture Repeat** project setting)." +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:363 +msgid "After enabling normal mapping, you may notice that your lights appear to be weaker. To resolve this, increase the **Height** property on your PointLight2D and DirectionalLight2D nodes. You may also want to increase the lights's **Energy** property slightly to get closer to how your lighting's intensity looked prior to enabling normal mapping." +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:370 +msgid "Using additive sprites as a faster alternative to 2D lights" +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:372 +msgid "If you run into performance issues when using 2D lights, it may be worth replacing some of them with Sprite2D nodes that use additive blending. This is particularly suited for short-lived dynamic effects, such as bullets or explosions." +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:376 +msgid "Additive sprites are much faster to render, since they don't need to go through a separate rendering pipeline. Additionally, it is possible to use this approach with AnimatedSprite2D (or Sprite2D + AnimationPlayer), which allows for animated 2D \"lights\" to be created." +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:381 +msgid "However, additive sprites have a few downsides compared to 2D lights:" +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:383 +msgid "The blending formula is inaccurate compared to \"actual\" 2D lighting. This is usually not a problem in sufficiently lit areas, but this prevents additive sprites from correctly lighting up areas that are fully dark." +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:386 +msgid "Additive sprites cannot cast shadows, since they are not lights." +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:387 +msgid "Additive sprites ignore normal and specular maps used on other sprites." +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:389 msgid "To display a sprite with additive blending, create a Sprite2D node and assign a texture to it. In the inspector, scroll down to the **CanvasItem > Material** section, unfold it and click the dropdown next to the **Material** property. Choose **New CanvasItemMaterial**, click the newly created material to edit it, then set **Blend Mode** to **Add**." msgstr "" diff --git a/sphinx/templates/tutorials/2d/2d_meshes.pot b/sphinx/templates/tutorials/2d/2d_meshes.pot index 5f2efd77a3..7a61c36acf 100644 --- a/sphinx/templates/tutorials/2d/2d_meshes.pot +++ b/sphinx/templates/tutorials/2d/2d_meshes.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/2d/2d_movement.pot b/sphinx/templates/tutorials/2d/2d_movement.pot index 6916862ec1..98ece67d75 100644 --- a/sphinx/templates/tutorials/2d/2d_movement.pot +++ b/sphinx/templates/tutorials/2d/2d_movement.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/2d/2d_parallax.pot b/sphinx/templates/tutorials/2d/2d_parallax.pot index 44b43a7a1a..28293dd37b 100644 --- a/sphinx/templates/tutorials/2d/2d_parallax.pot +++ b/sphinx/templates/tutorials/2d/2d_parallax.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/2d/2d_sprite_animation.pot b/sphinx/templates/tutorials/2d/2d_sprite_animation.pot index f544801828..1f85a38b0b 100644 --- a/sphinx/templates/tutorials/2d/2d_sprite_animation.pot +++ b/sphinx/templates/tutorials/2d/2d_sprite_animation.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/2d/2d_transforms.pot b/sphinx/templates/tutorials/2d/2d_transforms.pot index ae06284ed7..373bd1caf2 100644 --- a/sphinx/templates/tutorials/2d/2d_transforms.pot +++ b/sphinx/templates/tutorials/2d/2d_transforms.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/2d/canvas_layers.pot b/sphinx/templates/tutorials/2d/canvas_layers.pot index 7cd962f8ae..a6d4893643 100644 --- a/sphinx/templates/tutorials/2d/canvas_layers.pot +++ b/sphinx/templates/tutorials/2d/canvas_layers.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/2d/custom_drawing_in_2d.pot b/sphinx/templates/tutorials/2d/custom_drawing_in_2d.pot index 0f418e8c2a..447953a2b3 100644 --- a/sphinx/templates/tutorials/2d/custom_drawing_in_2d.pot +++ b/sphinx/templates/tutorials/2d/custom_drawing_in_2d.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/2d/index.pot b/sphinx/templates/tutorials/2d/index.pot index d3d6f1acf1..ca2a82e4ed 100644 --- a/sphinx/templates/tutorials/2d/index.pot +++ b/sphinx/templates/tutorials/2d/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/2d/introduction_to_2d.pot b/sphinx/templates/tutorials/2d/introduction_to_2d.pot index 372e527af5..8e970e3f80 100644 --- a/sphinx/templates/tutorials/2d/introduction_to_2d.pot +++ b/sphinx/templates/tutorials/2d/introduction_to_2d.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/2d/particle_process_material_2d.pot b/sphinx/templates/tutorials/2d/particle_process_material_2d.pot index 98fc16cca2..b2feba3df7 100644 --- a/sphinx/templates/tutorials/2d/particle_process_material_2d.pot +++ b/sphinx/templates/tutorials/2d/particle_process_material_2d.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/2d/particle_systems_2d.pot b/sphinx/templates/tutorials/2d/particle_systems_2d.pot index 89b6c5bf12..1e0bb211f3 100644 --- a/sphinx/templates/tutorials/2d/particle_systems_2d.pot +++ b/sphinx/templates/tutorials/2d/particle_systems_2d.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/2d/using_tilemaps.pot b/sphinx/templates/tutorials/2d/using_tilemaps.pot index 9d01349956..47f8a81751 100644 --- a/sphinx/templates/tutorials/2d/using_tilemaps.pot +++ b/sphinx/templates/tutorials/2d/using_tilemaps.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/2d/using_tilesets.pot b/sphinx/templates/tutorials/2d/using_tilesets.pot index b9d22a5b6d..79cef31a81 100644 --- a/sphinx/templates/tutorials/2d/using_tilesets.pot +++ b/sphinx/templates/tutorials/2d/using_tilesets.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -170,7 +170,7 @@ msgid "Using a collection of scenes" msgstr "" #: ../../docs/tutorials/2d/using_tilesets.rst:160 -msgid "Since Godot 4.0, you can place actual *scenes* as tiles. This allows you to use any collection of nodes as a tile. For example, you could use scene tiles to place gameplay elements, such as shops the player may be able to interact with. You could also use scene tiles to place AudioStreamPlayer2Ds (for ambient sounds), particle effects, and more." +msgid "You can also place actual *scenes* as tiles. This allows you to use any collection of nodes as a tile. For example, you could use scene tiles to place gameplay elements, such as shops the player may be able to interact with. You could also use scene tiles to place AudioStreamPlayer2Ds (for ambient sounds), particle effects, and more." msgstr "" #: ../../docs/tutorials/2d/using_tilesets.rst:168 diff --git a/sphinx/templates/tutorials/3d/3d_antialiasing.pot b/sphinx/templates/tutorials/3d/3d_antialiasing.pot index 1768f91ca9..4f3dd99209 100644 --- a/sphinx/templates/tutorials/3d/3d_antialiasing.pot +++ b/sphinx/templates/tutorials/3d/3d_antialiasing.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/3d_rendering_limitations.pot b/sphinx/templates/tutorials/3d/3d_rendering_limitations.pot index b965acbb1e..ebaf5d7ae9 100644 --- a/sphinx/templates/tutorials/3d/3d_rendering_limitations.pot +++ b/sphinx/templates/tutorials/3d/3d_rendering_limitations.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/3d_text.pot b/sphinx/templates/tutorials/3d/3d_text.pot index f058af0c1c..fdfb803fba 100644 --- a/sphinx/templates/tutorials/3d/3d_text.pot +++ b/sphinx/templates/tutorials/3d/3d_text.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/csg_tools.pot b/sphinx/templates/tutorials/3d/csg_tools.pot index 6ffb80acbe..9494391c61 100644 --- a/sphinx/templates/tutorials/3d/csg_tools.pot +++ b/sphinx/templates/tutorials/3d/csg_tools.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/environment_and_post_processing.pot b/sphinx/templates/tutorials/3d/environment_and_post_processing.pot index e4e22f95c0..930f993fd6 100644 --- a/sphinx/templates/tutorials/3d/environment_and_post_processing.pot +++ b/sphinx/templates/tutorials/3d/environment_and_post_processing.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -400,10 +400,9 @@ msgid "Screen-Space Reflections (SSR)" msgstr "" #: ../../docs/tutorials/3d/environment_and_post_processing.rst:384 -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:426 -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:503 -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:549 -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:874 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:512 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:558 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:883 msgid "*This feature is only available when using the Forward+ renderer, not Mobile or Compatibility.*" msgstr "" @@ -447,6 +446,10 @@ msgstr "" msgid "Screen-Space Ambient Occlusion (SSAO)" msgstr "" +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:426 +msgid "*This feature is only available when using the Forward+ and Compatibility renderers, not Mobile.*" +msgstr "" + #: ../../docs/tutorials/3d/environment_and_post_processing.rst:429 msgid "As mentioned in the **Ambient** section, areas where light from light nodes does not reach (either because it's outside the radius or shadowed) are lit with ambient light. Godot can simulate this using VoxelGI, ReflectionProbe, the Sky, or a constant ambient color. The problem, however, is that all the methods proposed previously act more on a larger scale (large regions) than at the smaller geometry level." msgstr "" @@ -507,379 +510,387 @@ msgstr "" msgid "**AO Channel Affect** The screen-space ambient occlusion intensity on materials that have an AO texture defined. Values higher than ``0.0`` will make the SSAO effect visible in areas darkened by AO textures." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:501 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:500 +msgid "Since Godot 4.6, a simplified version of SSAO is available in the Compatibility renderer. This implementation has a different look, but should perform significantly better on low-end devices compared to SSAO in Forward+." +msgstr "" + +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:504 +msgid "When using the Compatibility renderer, only the **Radius** and **Intensity** parameters can be adjusted." +msgstr "" + +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:510 msgid "Screen-Space Indirect Lighting (SSIL)" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:506 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:515 msgid ":abbr:`SSIL (Screen-Space Indirect Lighting)` provides indirect lighting for small details or dynamic geometry that other global illumination techniques cannot cover. This applies to bounced diffuse lighting, but also emissive materials. When :abbr:`SSIL (Screen-Space Indirect Lighting)` is enabled on its own, the effect may not be that noticeable, which is intended." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:512 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:521 msgid "Instead, :abbr:`SSIL (Screen-Space Indirect Lighting)` is meant to be used as a *complement* to other global illumination techniques such as VoxelGI, SDFGI and LightmapGI. :abbr:`SSIL (Screen-Space Indirect Lighting)` also provides a subtle ambient occlusion effect, similar to SSAO, but with less detail." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:517 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:526 msgid "This feature only provides indirect lighting. It is not a full global illumination solution. This makes it different from screen-space global illumination (SSGI) offered by other 3D engines. :abbr:`SSIL (Screen-Space Indirect Lighting)` can be combined with :abbr:`SSR (Screen-Space Reflections)` and/or :abbr:`SSAO (Screen-Space Ambient Occlusion)` for greater visual quality (at the cost of performance)." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:524 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:533 msgid "Tweaking :abbr:`SSIL (Screen-Space Indirect Lighting)` is possible with several parameters:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:526 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:535 msgid "**Radius:** The distance that bounced lighting can travel when using the screen space indirect lighting effect. A larger value will result in light bouncing further in a scene, but may result in under-sampling artifacts which look like long spikes surrounding light sources." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:530 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:539 msgid "**Intensity:** The brightness multiplier for the screen-space indirect lighting effect. A higher value will result in brighter light." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:532 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:541 msgid "**Sharpness:** The amount that the screen-space indirect lighting effect is allowed to blur over the edges of objects. Setting too high will result in aliasing around the edges of objects. Setting too low will make object edges appear blurry." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:536 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:545 msgid "**Normal Rejection:** Amount of normal rejection used when calculating screen-space indirect lighting. Normal rejection uses the normal of a given sample point to reject samples that are facing away from the current pixel. Normal rejection is necessary to avoid light leaking when only one side of an object is illuminated. However, normal rejection can be disabled if light leaking is desirable, such as when the scene mostly contains emissive objects that emit light from faces that cannot be seen from the camera." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:547 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:556 msgid "Signed Distance Field Global Illumination (SDFGI)" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:552 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:561 msgid "Signed distance field global illumination (SDFGI) is a form of real-time global illumination. It is not a screen-space effect, which means it can provide global illumination for off-screen elements (unlike :abbr:`SSIL (Screen-Space Indirect Lighting)`)." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:558 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:567 msgid "See :ref:`doc_using_sdfgi` for instructions on setting up this global illumination technique." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:566 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:575 msgid "Glow" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:570 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:579 msgid "When using the Compatibility rendering method, glow uses a different implementation with some properties being unavailable and hidden from the inspector: **Levels**, **Normalized**, **Strength**, **Blend Mode**, **Mix**, **Map**, and **Map Strength**." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:575 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:584 msgid "This implementation is optimized to run on low-end devices and is less flexible as a result." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:578 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:587 msgid "In photography and film, when light amount exceeds the maximum *luminance* (brightness) supported by the media, it generally bleeds outwards to darker regions of the image. This is simulated in Godot with the **Glow** effect." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:584 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:593 msgid "By default, even if the effect is enabled, it will be weak or invisible. One of two conditions need to happen for it to actually show:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:587 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:596 msgid "The light in a pixel surpasses the **HDR Threshold** (where 0 is all light surpasses it, and 1.0 is light over the tonemapper **White** value). Normally, this value is expected to be at 1.0, but it can be lowered to allow more light to bleed. There is also an extra parameter, **HDR Scale**, that allows scaling (making brighter or darker) the light surpassing the threshold." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:596 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:605 msgid "The **Bloom** property has a value greater than ``0.0``. As it increases, it sends the whole screen to the glow processor at higher amounts." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:601 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:610 msgid "Both will cause the light to start bleeding out of the brighter areas." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:603 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:612 msgid "Once glow is visible, it can be controlled with a few extra parameters:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:605 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:614 msgid "**Intensity** is an overall scale for the effect, it can be made stronger or weaker (``0.0`` removes it)." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:607 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:616 msgid "**Strength** is how strong the gaussian filter kernel is processed. Greater values make the filter saturate and expand outwards. In general, changing this is not needed, as the size can be adjusted more efficiently with the **Levels**." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:611 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:620 msgid "The **Blend Mode** of the effect can also be changed:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:613 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:622 msgid "**Additive** is the strongest one, as it only adds the glow effect over the image with no blending involved. In general, it's too strong to be used, but can look good with low-intensity **Bloom** (produces a dream-like effect)." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:616 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:625 msgid "**Screen** ensures glow never brightens more than itself and it works great as an all around." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:618 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:627 msgid "**Softlight** is the default and weakest one, producing only a subtle color disturbance around the objects. This mode works best on dark scenes." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:620 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:629 msgid "**Replace** can be used to :ref:`blur the whole screen ` or debug the effect. It only shows the glow effect without the image below." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:623 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:632 msgid "**Mix** mixes the glow effect with the main image. This can be used for greater artistic control. The mix factor is controlled by the **Mix** property which appears above the blend mode (only when the blend mode is set to Mix). High mix factor values will appear to darken the image unless **Bloom** is increased." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:629 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:638 msgid "To change the glow effect size and shape, Godot provides **Levels**. Smaller levels are strong glows that appear around objects, while large levels are hazy glows covering the whole screen:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:635 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:644 msgid "The real strength of this system, though, is to combine levels to create more interesting glow patterns:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:640 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:649 msgid "Finally, the glow effect can be controlled using a *glow map*, which is a texture that determines how bright glow should be on each part of the screen. This texture can optionally be colored to tint the glow effect to the glow map's color. The texture is stretched to fit the viewport, so using an aspect ratio that matches your viewport's most common aspect ratio (such as 16:9) is recommended to avoid visible distortion." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:647 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:656 msgid "There are 2 main use cases for a glow map texture:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:649 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:658 msgid "Create a \"lens dirt\" effect using a dirt pattern texture." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:650 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:659 msgid "Make glow less strong on specific parts of the screen by using a gradient texture." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:654 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:663 msgid "By default, glow uses a bicubic scaling filter on desktop platforms and a bilinear scaling filter on mobile platforms. The bicubic scaling filter results in higher quality with a less blocky appearance, but it has a performance cost on the GPU which can be significant on integrated graphics. The scale mode can be controlled using the **Rendering > Environment > Glow > Upscale Mode** project setting. This setting is only effective when using the Forward+ or Mobile renderers, as Compatibility uses a different glow implementation." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:668 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:677 msgid "Using glow in 2D" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:670 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:679 msgid "There are 2 ways to use glow in 2D:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:672 -msgid "Since Godot 4.2, you can enable HDR for 2D rendering when using the Forward+ and Mobile rendering methods. This has a performance cost, but it allows for a greater dynamic range. This also allows you to control which objects glow using their individual **Modulate** or **Self Modulate** properties (use the RAW mode in the color picker). Enabling HDR can also reduce banding in the 2D rendering output." +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:681 +msgid "Since Godot 4.2, you can enable HDR for 2D rendering when using the Forward+ and Mobile rendering methods. This has a performance cost, but it allows for a greater dynamic range. This also allows you to control which objects glow using their individual **Modulate** or **Self Modulate** properties (use the Intensity slider in the color picker). Enabling HDR can also reduce banding in the 2D rendering output." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:679 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:688 msgid "To enable HDR in 2D, open the Project Settings, enable :ref:`Rendering > Viewport > HDR 2D` then restart the editor." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:683 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:692 msgid "If you want to maximize performance, you can leave HDR disabled for 2D rendering. However, you will have less control on which objects glow." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:686 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:695 msgid "Enable glow, set the environment background mode to **Canvas** then decrease **Glow HDR Threshold** so that pixels that are not overbright will still glow. To prevent UI elements from glowing, make them children of a :ref:`class_CanvasLayer` node. You can control which layers are affected by glow using the **Background > Canvas Max Layer** property of the Environment resource." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:693 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:702 msgid "Example of using glow in a 2D scene" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:697 -msgid "Example of using glow in a 2D scene. HDR 2D is enabled, while coins and the bullet have their **Modulate** property increased to overbright values using the RAW mode in the color picker." +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:706 +msgid "Example of using glow in a 2D scene. HDR 2D is enabled, while coins and the bullet have their **Modulate** property increased to overbright values using the Intensity slider in the color picker." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:703 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:712 msgid "The 2D renderer renders in linear color space if the :ref:`Rendering > Viewport > HDR 2D` project setting is enabled, so the ``source_color`` hint must also be used for uniform samplers that are used as color input in ``canvas_item`` shaders. If this is not done, the texture will appear washed out." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:709 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:718 msgid "If 2D HDR is disabled, ``source_color`` will keep working correctly in ``canvas_item`` shaders, so it's recommend to use it when relevant either way." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:713 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:722 msgid "Using linear color space also means that alpha blending will change. Sprites with low opacity values generally become more visible, and font rendering will look bolder due to the low-opacity pixels from the font antialiasing becoming more visible. This also affects the editor's own rendering." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:721 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:730 msgid "Using glow to blur the screen" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:723 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:732 msgid "Glow can be used to blur the whole viewport, which is useful for background blur when a menu is open. Only 3D rendering will be affected unless the environment's background mode is set to **Canvas**. To prevent UI elements from being blurred when using the Canvas background mode, make them children of a :ref:`class_CanvasLayer` node. You can control which layers are affected by this blurring effect using the **Background > Canvas Max Layer** property of the Environment resource." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:730 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:739 msgid "To use glow as a blurring solution:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:732 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:741 msgid "Enable **Normalized** and adjust levels according to preference. Increasing higher level indices will result in a more blurred image. It's recommended to leave a single glow level at ``1.0`` and leave all other glow levels at ``0.0``, but this is not required. Note that the final appearance will vary depending on viewport resolution." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:737 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:746 msgid "Set **Intensity** to ``1.0`` and **Bloom** to ``1.0``." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:738 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:747 msgid "Set the blend mode to **Replace** and **HDR Luminance Cap** to ``1.0``." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:740 -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:744 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:749 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:753 msgid "Example of using glow to blur the 2D rendering in the menu's background" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:747 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:756 msgid "Adjustments" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:749 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:758 msgid "At the end of processing, Godot offers the possibility to do some standard image adjustments." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:754 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:763 msgid "**Basic BCS adjustments**" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:756 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:765 msgid "The first adjustment is being able to change the typical **Brightness**, **Contrast**, and **Saturation** properties:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:761 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:770 msgid "**Color correction using a 1D gradient**" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:763 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:772 msgid "The second adjustment is by supplying a color correction gradient. This can be done by assigning a GradientTexture1D resource to the **Color Correction** property, or by loading a texture containing a horizontal gradient. The leftmost part of the gradient represents black in the source image, whereas the rightmost part of the gradient represents white in the source image." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:769 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:778 msgid "A linear black-to-white gradient like the following one will produce no effect:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:773 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:782 msgid "But creating custom ones will allow to map each channel to a different color:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:777 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:786 msgid "**Color correction using a 3D LUT**" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:779 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:788 msgid "A 3D look-up-texture (LUT) can also be used for color correction. This is a special texture used to modify each color channel separately from one another (red, green, blue). This image can be of any resolution, but since color correction is low-frequency data, sticking to low resolutions is recommended for performance reasons. A LUT texture's resolution is typically 17×17×17, 33×33×33, 51×51×51 or 65×65×65 (the odd size allows for better interpolation)." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:786 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:795 msgid "For this to work, the look-up texture's import mode must be set to Texture3D in the Import dock (instead of being imported as a regular Texture2D):" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:791 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:800 msgid "Make sure to configure the number of horizontal and vertical slices to import as well. If you don't do this, the LUT texture will not affect the viewport correctly when used. You can preview how the 3D texture was imported by double-clicking it, in the FileSystem dock, then going to the inspector to flip through the texture's layers." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:797 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:806 msgid "You can use this neutral 33×33×33 LUT template as a base (right-click and choose **Save as…**):" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:802 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:811 msgid "With the above LUT template, after changing its import mode to **Texture3D**, set its number of **Horizontal** slices to ``33`` in the Import dock then click **Reimport**. If you load this LUT into the **Color Correction** property, you won't see any visible difference for now since this texture is designed to be a neutral starting point." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:808 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:817 msgid "This LUT template can be modified in an image editor to provide a different mood to the image. A common workflow is to place the LUT image next to a screenshot of the project's 3D viewport, then use an image editor to modify both the LUT image and the screenshot at the same time. The LUT can then be saved and applied to the game engine to perform the same color correction in real-time." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:814 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:823 msgid "For example, modifying the LUT template in an image editor to give it a \"sepia\" look results in the image on the right:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:821 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:830 msgid "Adjustments and color correction are applied *after* tonemapping. This means the tonemapping properties defined above still have an effect when adjustments are enabled." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:826 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:835 msgid "Camera attribute options" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:829 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:838 msgid "Depth of Field / Far Blur" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:831 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:840 msgid "This effect simulates focal distance on cameras. It blurs objects behind a given range. It has an initial **Distance** with a **Transition** region (in world units):" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:837 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:846 msgid "The **Amount** parameter controls the amount of blur. For larger blurs, tweaking the depth of field quality in the advanced project settings may be needed to avoid artifacts." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:842 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:851 msgid "Depth of Field / Near Blur" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:844 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:853 msgid "This effect simulates focal distance on cameras. It blurs objects close to the camera (acts in the opposite direction as far blur). It has an initial **Distance** with a **Transition** region (in world units):" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:850 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:859 msgid "The **Amount** parameter controls the amount of blur. For larger blurs, tweaking the **Quality** may be needed in order to avoid artifacts." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:853 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:862 msgid "It is common to use both blurs together to focus the viewer's attention on a given object, or create a so-called `\"tilt shift\" effect `__." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:861 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:870 msgid "When using CameraAttributesPhysical instead of CameraAttributesPractical, depth of field is automatically computed from the camera attributes' focus distance, focal length, and aperture." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:866 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:875 msgid "Exposure" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:868 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:877 msgid "This multiplies the overall scene brightness visible from the camera. Higher values result in a visually brighter scene." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:872 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:881 msgid "Auto Exposure" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:877 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:886 msgid "Even though, in most cases, lighting and texturing are heavily artist controlled, Godot supports a basic high dynamic range implementation with the auto exposure mechanism. This is generally used to add realism when combining interior areas with low light and bright outdoor areas. Auto exposure simulates the camera (or eye) in an effort to adapt between light and dark locations and their different amounts of light." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:886 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:895 msgid "Auto exposure needs to evaluate the scene's brightness every frame, which has a moderate performance cost. Therefore, it's recommended to leave Auto Exposure disabled if it doesn't make much of a difference in your scene." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:892 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:901 msgid "The simplest way to use auto exposure is to make sure outdoor lights (or other strong lights) have energy beyond 1.0. This is done by tweaking their **Energy** multiplier (on the Light itself). To make it consistent, the **Sky** usually needs to use the energy multiplier too, to match with the directional light. Normally, values between 3.0 and 6.0 are enough to simulate indoor-outdoor conditions." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:898 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:907 msgid "By combining Auto Exposure with :ref:`doc_environment_and_post_processing_glow` post-processing, pixels that go over the tonemap **White** will bleed to the glow buffer, creating the typical bloom effect in photography." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:904 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:913 msgid "The user-controllable values in the Auto Exposure section come with sensible defaults, but you can still tweak them:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:909 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:918 msgid "**Scale:** Value to scale the lighting. Higher values produce brighter images, and lower values produce darker ones." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:911 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:920 msgid "**Min Sensitivity / Min Exposure Value:** Minimum luminance that auto exposure will aim to adjust for (in ISO when using CameraAttributesPractical, or in EV100 when using CameraAttributesPhysical). Luminance is the average of the light in all the pixels of the screen." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:915 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:924 msgid "**Max Sensitivity / Max Exposure Value:** Maximum luminance that auto exposure will aim to adjust for (in ISO when using CameraAttributesPractical, or in EV100 when using CameraAttributesPhysical)." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:918 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:927 msgid "**Speed:** Speed at which luminance corrects itself. The higher the value, the faster luminance correction happens. High values may be more suited to fast-paced games, but can be distracting in some scenarios." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:922 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:931 msgid "When using CameraAttributesPractical, exposure is set using *sensitivity* defined in ISO instead of an exposure value in EV100. Typical ISO values are between 50 and 3200, with higher values resulting in higher final exposure. In real life, daytime photography generally uses ISO values between 100 and 800." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:929 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:938 msgid "See :ref:`doc_physical_light_and_camera_units` if you wish to use real world units to configure your camera's exposure, field of view and depth of field." msgstr "" diff --git a/sphinx/templates/tutorials/3d/global_illumination/faking_global_illumination.pot b/sphinx/templates/tutorials/3d/global_illumination/faking_global_illumination.pot index 2fa6f6b47d..af8293ae13 100644 --- a/sphinx/templates/tutorials/3d/global_illumination/faking_global_illumination.pot +++ b/sphinx/templates/tutorials/3d/global_illumination/faking_global_illumination.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/global_illumination/index.pot b/sphinx/templates/tutorials/3d/global_illumination/index.pot index e3b0bc8ce7..b85798db21 100644 --- a/sphinx/templates/tutorials/3d/global_illumination/index.pot +++ b/sphinx/templates/tutorials/3d/global_illumination/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/global_illumination/introduction_to_global_illumination.pot b/sphinx/templates/tutorials/3d/global_illumination/introduction_to_global_illumination.pot index bfa1eee35c..6d3910e2b9 100644 --- a/sphinx/templates/tutorials/3d/global_illumination/introduction_to_global_illumination.pot +++ b/sphinx/templates/tutorials/3d/global_illumination/introduction_to_global_illumination.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/global_illumination/reflection_probes.pot b/sphinx/templates/tutorials/3d/global_illumination/reflection_probes.pot index 229b363c5a..36a8610e3b 100644 --- a/sphinx/templates/tutorials/3d/global_illumination/reflection_probes.pot +++ b/sphinx/templates/tutorials/3d/global_illumination/reflection_probes.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/global_illumination/using_lightmap_gi.pot b/sphinx/templates/tutorials/3d/global_illumination/using_lightmap_gi.pot index 03bf7b7c91..81a5dd274a 100644 --- a/sphinx/templates/tutorials/3d/global_illumination/using_lightmap_gi.pot +++ b/sphinx/templates/tutorials/3d/global_illumination/using_lightmap_gi.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -28,7 +28,7 @@ msgid "Unlike VoxelGI and SDFGI, baked lightmaps are completely static. Once bak msgstr "" #: ../../docs/tutorials/3d/global_illumination/using_lightmap_gi.rst:18 -msgid "As they are baked, they have fewer problems than VoxelGI and SDFGI regarding light bleeding, and indirect light will often look better. The downside is that baking lightmaps takes longer compared to baking VoxelGI. While baking VoxelGI can be done in a matter of seconds, baking lightmaps can take several minutes if not more. This can slow down iteration speed significantly, so it is recommended to bake lightmaps only when you actually need to see changes in lighting. Since Godot 4.0, lightmaps are baked on the GPU, making light baking faster if you have a mid-range or high-end dedicated GPU." +msgid "As they are baked, they have fewer problems than VoxelGI and SDFGI regarding light bleeding, and indirect light will often look better. The downside is that baking lightmaps takes longer compared to baking VoxelGI. While baking VoxelGI can be done in a matter of seconds, baking lightmaps can take several minutes if not more. This can slow down iteration speed significantly, so it is recommended to bake lightmaps only when you actually need to see changes in lighting. Lightmaps are baked on the GPU, making light baking faster if you have a mid-range or high-end dedicated GPU." msgstr "" #: ../../docs/tutorials/3d/global_illumination/using_lightmap_gi.rst:27 @@ -486,7 +486,7 @@ msgid "JNLM (Non-Local Means with Joint Filtering)" msgstr "" #: ../../docs/tutorials/3d/global_illumination/using_lightmap_gi.rst:522 -msgid "JNLM is the default denoising method and is included in Godot. It uses a simple but efficient denoising algorithm known as *non-local means*. JNLM runs on the GPU using a compute shader, and is compatible with any GPU that can run Godot 4's Vulkan-based rendering methods. No additional setup is required." +msgid "JNLM is the default denoising method and is included in Godot. It uses a simple but efficient denoising algorithm known as *non-local means*. JNLM runs on the GPU using a compute shader, and is compatible with any GPU that can run Godot 4's RenderingDevice-based renderers. No additional setup is required." msgstr "" #: ../../docs/tutorials/3d/global_illumination/using_lightmap_gi.rst:527 diff --git a/sphinx/templates/tutorials/3d/global_illumination/using_sdfgi.pot b/sphinx/templates/tutorials/3d/global_illumination/using_sdfgi.pot index 7186b10737..0f95133076 100644 --- a/sphinx/templates/tutorials/3d/global_illumination/using_sdfgi.pot +++ b/sphinx/templates/tutorials/3d/global_illumination/using_sdfgi.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -20,7 +20,7 @@ msgid "Signed distance field global illumination (SDFGI)" msgstr "" #: ../../docs/tutorials/3d/global_illumination/using_sdfgi.rst:6 -msgid "Signed distance field global illumination (SDFGI) is a novel technique available in Godot 4.0. It provides semi-real-time global illumination that scales to any world size and works with procedurally generated levels." +msgid "Signed distance field global illumination (SDFGI) is a novel technique available in Godot. It provides semi-real-time global illumination that scales to any world size and works with procedurally generated levels." msgstr "" #: ../../docs/tutorials/3d/global_illumination/using_sdfgi.rst:10 diff --git a/sphinx/templates/tutorials/3d/global_illumination/using_voxel_gi.pot b/sphinx/templates/tutorials/3d/global_illumination/using_voxel_gi.pot index 9b0199fd5d..1c4ddc797a 100644 --- a/sphinx/templates/tutorials/3d/global_illumination/using_voxel_gi.pot +++ b/sphinx/templates/tutorials/3d/global_illumination/using_voxel_gi.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -145,86 +145,110 @@ msgstr "" msgid "**Dynamic:** The mesh won't be taken into account for VoxelGI baking, but it will still receive *and* contribute indirect lighting to the scene in real-time. This option is much slower compared to **Static**. Only use the **Dynamic** global illumination mode on large meshes that will change significantly during gameplay." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:124 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:126 +msgid "For meshes with the **Static** bake mode, the VoxelGI baking system is not able to make use of custom shaders (:ref:`class_ShaderMaterial`). These meshes will be considered to be pure black, only acting as light blockers. You can make VoxelGI take custom shaders into account by using the **Dynamic** bake mode for these objects, but this has a performance cost." +msgstr "" + +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:132 +msgid "For :ref:`class_BaseMaterial3D`, some properties are currently ignored during baking. This can impact visuals if the material's albedo or emission texture was designed around using certain UV mappings:" +msgstr "" + +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:136 +msgid "**UV1 > Offset**" +msgstr "" + +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:137 +msgid "**UV1 > Scale**" +msgstr "" + +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:138 +msgid "**UV1 > Triplanar**" +msgstr "" + +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:139 +msgid "**Emission > On UV2**" +msgstr "" + +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:141 msgid "Additionally, there are 3 bake modes available for lights (DirectionalLight3D, OmniLight3D and SpotLight3D):" msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:127 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:144 msgid "**Disabled:** The light won't be taken into account for VoxelGI baking. The light won't contribute indirect lighting to the scene." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:129 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:146 msgid "**Static:** The light will be taken into account for VoxelGI baking. The light will contribute indirect lighting to the scene. If the light is changed in any way after baking, the VoxelGI node must be baked again or indirect lighting will look incorrect. If in doubt, use this mode for level lighting." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:133 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:150 msgid "**Dynamic (default):** The light won't be taken into account for VoxelGI baking, but it will still contribute indirect lighting to the scene in real-time. This option is slower compared to **Static**. Only use the **Dynamic** global illumination mode on lights that will change significantly during gameplay." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:140 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:157 msgid "The amount of indirect energy emitted by a light depends on its color, energy *and* indirect energy properties. To make a specific light emit more or less indirect energy without affecting the amount of direct light emitted by the light, adjust the **Indirect Energy** property in the Light3D inspector." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:147 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:164 msgid "See :ref:`doc_introduction_to_global_illumination_gi_mode_recommendations` for general usage recommendations." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:151 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:168 msgid "Adjusting VoxelGI performance and quality" msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:153 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:170 msgid "Since VoxelGI is relatively demanding, it will perform best on systems with recent dedicated GPUs. On older dedicated GPUs and integrated graphics, tweaking the settings is necessary to achieve reasonable performance." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:157 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:174 msgid "In the Project Settings' **Rendering > Global Illumination** section, VoxelGI quality can also be adjusted in two ways:" msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:160 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:177 msgid "**Voxel Gi > Quality:** If set to **Low** instead of **High**, voxel cone tracing will only use 4 taps instead of 6. This speeds up rendering at the cost of less pronounced ambient occlusion." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:163 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:180 msgid "**Gi > Use Half Resolution:** If enabled, both VoxelGI and SDFGI will have their GI buffer rendering at halved resolution. For instance, when rendering in 3840×2160, the GI buffer will be computed at a 1920×1080 resolution. Enabling this option saves a lot of GPU time, but it can introduce visible aliasing around thin details." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:169 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:186 msgid "Note that the **Advanced** toggle must be enabled in the project settings dialog for the above settings to be visible." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:172 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:189 msgid "Additionally, VoxelGI can be disabled entirely by hiding the VoxelGI node. This can be used for comparison purposes or to improve performance on low-end systems." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:176 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:193 msgid "Reducing VoxelGI light leaks and artifacts" msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:178 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:195 msgid "After baking VoxelGI, you may notice indirect light is leaking at some spots in your level geometry. This can be remedied in several ways:" msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:181 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:198 msgid "For both light leaking and artifacts, try moving or rotating the VoxelGI node then bake it again." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:183 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:200 msgid "To combat light leaking in general, ensure your level geometry is fully sealed. This is best done in the 3D modeling software used to design the level, but primitive MeshInstance3D nodes with their global illumination mode set to **Static** can also be used." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:187 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:204 msgid "To combat light leaking with thin geometry, it's recommended to make the geometry in question thicker. If this is not possible, then add a primitive MeshInstance3D node with its global illumination mode set to **Static**. Bake VoxelGI again, then hide the primitive MeshInstance3D node (it will still be taken into account by VoxelGI). For optimal results, the MeshInstance3D should have a material whose color matches the original thin geometry." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:193 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:210 msgid "To combat artifacts that can appear on reflective surfaces, try increasing **Bias** and/or **Normal Bias** in the VoxelGIData resource as described above. Do not increase these values too high, or light leaking will become more pronounced." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:197 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:214 msgid "If you notice VoxelGI nodes popping in and out of existence as the camera moves, this is most likely because the engine is rendering too many VoxelGI instances at once. Godot is limited to rendering 8 VoxelGI nodes at once, which means up to 8 instances can be in the camera view before some of them will start flickering." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:203 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:220 msgid "Additionally, for performance reasons, Godot can only blend between 2 VoxelGI nodes at a given pixel on the screen. If you have more than 2 VoxelGI nodes overlapping, global illumination may appear to flicker as the camera moves or rotates." msgstr "" diff --git a/sphinx/templates/tutorials/3d/high_dynamic_range.pot b/sphinx/templates/tutorials/3d/high_dynamic_range.pot index 62c9a8f4cf..ef8d34da1c 100644 --- a/sphinx/templates/tutorials/3d/high_dynamic_range.pot +++ b/sphinx/templates/tutorials/3d/high_dynamic_range.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/index.pot b/sphinx/templates/tutorials/3d/index.pot index 326321a605..0e8b799e10 100644 --- a/sphinx/templates/tutorials/3d/index.pot +++ b/sphinx/templates/tutorials/3d/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/introduction_to_3d.pot b/sphinx/templates/tutorials/3d/introduction_to_3d.pot index 3ab1e348db..317037bea2 100644 --- a/sphinx/templates/tutorials/3d/introduction_to_3d.pot +++ b/sphinx/templates/tutorials/3d/introduction_to_3d.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/lights_and_shadows.pot b/sphinx/templates/tutorials/3d/lights_and_shadows.pot index d2e85f0adc..6189b2a5d2 100644 --- a/sphinx/templates/tutorials/3d/lights_and_shadows.pot +++ b/sphinx/templates/tutorials/3d/lights_and_shadows.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/mesh_lod.pot b/sphinx/templates/tutorials/3d/mesh_lod.pot index 73a456f184..6ac79cf078 100644 --- a/sphinx/templates/tutorials/3d/mesh_lod.pot +++ b/sphinx/templates/tutorials/3d/mesh_lod.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/occlusion_culling.pot b/sphinx/templates/tutorials/3d/occlusion_culling.pot index e25b6cb8c9..b051f1e720 100644 --- a/sphinx/templates/tutorials/3d/occlusion_culling.pot +++ b/sphinx/templates/tutorials/3d/occlusion_culling.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/particles/attractors.pot b/sphinx/templates/tutorials/3d/particles/attractors.pot index 3fc438dfd1..02205f3146 100644 --- a/sphinx/templates/tutorials/3d/particles/attractors.pot +++ b/sphinx/templates/tutorials/3d/particles/attractors.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -83,118 +83,114 @@ msgstr "" msgid "The ``Cull Mask`` property controls which particle systems are affected by an attractor based on each system's :ref:`visibility layers `. A particle system is only affected by an attractor if at least one of the system's visibility layers is enabled in the attractor's cull mask." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:78 -msgid "There is a `known issue `_ with GPU particle attractors that prevent the cull mask from working properly in Godot 4.0. We will update the documentation as soon as it is fixed." -msgstr "" - -#: ../../docs/tutorials/3d/particles/attractors.rst:83 +#: ../../docs/tutorials/3d/particles/attractors.rst:77 msgid "Box attractors" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:85 +#: ../../docs/tutorials/3d/particles/attractors.rst:79 msgid "Particle attractor box" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:89 +#: ../../docs/tutorials/3d/particles/attractors.rst:83 msgid "Box attractor in the node list" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:91 +#: ../../docs/tutorials/3d/particles/attractors.rst:85 msgid "Box attractors have a box-shaped influence region. You control their size with the ``Extents`` property. Box extents always measure half of the sides of its bounds, so a value of ``(X=1.0,Y=1.0,Z=1.0)`` creates a box with an influence region that is 2 meters wide on each side." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:95 +#: ../../docs/tutorials/3d/particles/attractors.rst:89 msgid "To create a box attractor, add a new child node to your scene and select ``GPUParticlesAttractorBox3D`` from the list of available nodes. You can animate the box position or attach it to a moving node for more dynamic effects." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:99 +#: ../../docs/tutorials/3d/particles/attractors.rst:93 msgid "Box attractor parts particle field" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:102 +#: ../../docs/tutorials/3d/particles/attractors.rst:96 msgid "A box attractor with a negative strength value parts a particle field as it moves through it." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:105 +#: ../../docs/tutorials/3d/particles/attractors.rst:99 msgid "Sphere attractors" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:107 +#: ../../docs/tutorials/3d/particles/attractors.rst:101 msgid "Particle attractor sphere" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:111 +#: ../../docs/tutorials/3d/particles/attractors.rst:105 msgid "Sphere attractor in the node list" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:113 +#: ../../docs/tutorials/3d/particles/attractors.rst:107 msgid "Sphere attractors have a spherical influence region. You control their size with the ``Radius`` property. While box attractors don't have to be perfect cubes, sphere attractors will always be spheres: You can't set width independently from height. If you want to use a sphere attractor for elongated shapes, you have to change its ``Scale`` in the attractor's ``Node3D`` section." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:118 +#: ../../docs/tutorials/3d/particles/attractors.rst:112 msgid "To create a sphere attractor, add a new child node to your scene and select ``GPUParticlesAttractorSphere3D`` from the list of available nodes. You can animate the sphere position or attach it to a moving node for more dynamic effects." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:122 +#: ../../docs/tutorials/3d/particles/attractors.rst:116 msgid "Sphere attractor parts particle field" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:125 +#: ../../docs/tutorials/3d/particles/attractors.rst:119 msgid "A sphere attractor with a negative strength value parts a particle field as it moves through it." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:128 +#: ../../docs/tutorials/3d/particles/attractors.rst:122 msgid "Vector field attractors" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:130 +#: ../../docs/tutorials/3d/particles/attractors.rst:124 msgid "Particle attractor vector field" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:134 +#: ../../docs/tutorials/3d/particles/attractors.rst:128 msgid "Vector field attractor in the node list" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:136 +#: ../../docs/tutorials/3d/particles/attractors.rst:130 msgid "A vector field is a 3D area that contains vectors positioned on a grid. The grid density controls how many vectors there are and how far they're spread apart. Each vector in a vector field points in a specific direction. This can be completely random or aligned in a way that forms distinct patterns and paths." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:141 +#: ../../docs/tutorials/3d/particles/attractors.rst:135 msgid "When particles interact with a vector field, their movement direction changes to match the nearest vector in the field. As a particle moves closer to the next vector in the field, it changes direction to match that vector's direction. The particle's speed depends on the vector's length." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:145 +#: ../../docs/tutorials/3d/particles/attractors.rst:139 msgid "Like box attractors, vector field attractors have a box-shaped influence region. You control their size with the ``Extents`` property, where a value of ``(X=1.0,Y=1.0,Z=1.0)`` creates a box with an influence region that is 2 meters wide on each side. The ``Texture`` property takes a :ref:`3D texture ` where every pixel represents a vector with the pixel's color interpreted as the vector's direction and size." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:152 +#: ../../docs/tutorials/3d/particles/attractors.rst:146 msgid "When a texture is used as a vector field, there are two types of conversion you need to be aware of:" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:154 +#: ../../docs/tutorials/3d/particles/attractors.rst:148 msgid "The texture coordinates map to the attractor bounds. The image below shows which part of the texture corresponds to which part of the vector field volume. For example, the bottom half of the texture affects the top half of the vector field attractor because ``+Y`` points down in the texture UV space, but up in Godot's world space." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:158 +#: ../../docs/tutorials/3d/particles/attractors.rst:152 msgid "The pixel color values map to direction vectors in space. The image below provides an overview. Since particles can move in two directions along each axis, the lower half of the color range represents negative direction values while the upper half represents positive direction values. So a yellow pixel ``(R=1,G=1,B=0)`` maps to the vector ``(X=1,Y=1,Z=-1)`` while a neutral gray ``(R=0.5,G=0.5,B=0.5)`` results in no movement at all." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:164 +#: ../../docs/tutorials/3d/particles/attractors.rst:158 msgid "Mapping from texture to vector field" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:167 +#: ../../docs/tutorials/3d/particles/attractors.rst:161 msgid "To create a vector field attractor, add a new child node to your scene and select ``GPUParticlesAttractorVectorField3D`` from the list of available nodes. You can animate the attractor's position or attach it to a moving node for more dynamic effects." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:173 +#: ../../docs/tutorials/3d/particles/attractors.rst:167 msgid "If you don't have external tools to create vector field textures, you can use a NoiseTexture3D with a Color Ramp attached as a vector field texture. The Color Ramp can be modified to adjust how much each coordinate is affected by the vector field." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:178 +#: ../../docs/tutorials/3d/particles/attractors.rst:172 msgid "Vector field attractor in a field of particles" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:181 +#: ../../docs/tutorials/3d/particles/attractors.rst:175 msgid "Two particle systems are affected by the same vector field attractor. :download:`Click here to download the 3D texture `." msgstr "" diff --git a/sphinx/templates/tutorials/3d/particles/collision.pot b/sphinx/templates/tutorials/3d/particles/collision.pot index ff4588383a..94ad37bd05 100644 --- a/sphinx/templates/tutorials/3d/particles/collision.pot +++ b/sphinx/templates/tutorials/3d/particles/collision.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -47,182 +47,178 @@ msgstr "" msgid "The ``Cull Mask`` property controls which particle systems are affected by a collision node based on each system's :ref:`visibility layers `. A particle system collides with a collision node only if at least one of the system's visibility layers is enabled in the collider's cull mask." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:33 -msgid "There is a `known issue `_ with GPU particle collision that prevent the cull mask from working properly in Godot 4.0. We will update the documentation as soon as it is fixed." -msgstr "" - -#: ../../docs/tutorials/3d/particles/collision.rst:38 +#: ../../docs/tutorials/3d/particles/collision.rst:32 msgid "Box collision" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:40 +#: ../../docs/tutorials/3d/particles/collision.rst:34 msgid "Particle collision box" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:44 +#: ../../docs/tutorials/3d/particles/collision.rst:38 msgid "Box collision in the node list" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:46 +#: ../../docs/tutorials/3d/particles/collision.rst:40 msgid "Box collision nodes are shaped like a solid, rectangular box. You control their size with the ``Extents`` property. Box extents always measure half of the sides of its bounds, so a value of ``(X=1.0,Y=1.0,Z=1.0)`` creates a box that is 2 meters wide on each side. Box collision nodes are useful for simulating floor and wall geometry that particles should collide against." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:51 +#: ../../docs/tutorials/3d/particles/collision.rst:45 msgid "To create a box collision node, add a new child node to your scene and select ``GPUParticlesCollisionBox3D`` from the list of available nodes. You can animate the box position or attach it to a moving node for more dynamic effects." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:55 +#: ../../docs/tutorials/3d/particles/collision.rst:49 msgid "Box collision with particle systems" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:58 +#: ../../docs/tutorials/3d/particles/collision.rst:52 msgid "Two particle systems collide with a box collision node" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:61 +#: ../../docs/tutorials/3d/particles/collision.rst:55 msgid "Sphere collision" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:63 +#: ../../docs/tutorials/3d/particles/collision.rst:57 msgid "Particle collision sphere" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:67 +#: ../../docs/tutorials/3d/particles/collision.rst:61 msgid "Sphere collision in the node list" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:69 +#: ../../docs/tutorials/3d/particles/collision.rst:63 msgid "Sphere collision nodes are shaped like a solid sphere. The ``Radius`` property controls the size of the sphere. While box collision nodes don't have to be perfect cubes, sphere collision nodes will always be spheres. If you want to set width independently from height, you have to change the ``Scale`` property in the ``Node3D`` section." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:74 +#: ../../docs/tutorials/3d/particles/collision.rst:68 msgid "To create a sphere collision node, add a new child node to your scene and select ``GPUParticlesCollisionSphere3D`` from the list of available nodes. You can animate the sphere's position or attach it to a moving node for more dynamic effects." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:78 +#: ../../docs/tutorials/3d/particles/collision.rst:72 msgid "Sphere collision with particle systems" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:81 +#: ../../docs/tutorials/3d/particles/collision.rst:75 msgid "Two particle systems collide with a sphere collision node" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:84 +#: ../../docs/tutorials/3d/particles/collision.rst:78 msgid "Height field collision" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:86 +#: ../../docs/tutorials/3d/particles/collision.rst:80 msgid "Particle collision height field" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:90 +#: ../../docs/tutorials/3d/particles/collision.rst:84 msgid "Height field collision in the node list" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:92 +#: ../../docs/tutorials/3d/particles/collision.rst:86 msgid "Height field particle collision is very useful for large outdoor areas that need to collide with particles. At runtime, the node creates a height field from all the meshes within its bounds that match its cull mask. Particles collide against the mesh that this height field represents. Since the height field generation is done dynamically, it can follow the player camera around and react to changes in the level. Different settings for the height field density offer a wide range of performance adjustments." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:98 +#: ../../docs/tutorials/3d/particles/collision.rst:92 msgid "To create a height field collision node, add a new child node to your scene and select ``GPUParticlesCollisionHeightField3D`` from the list of available nodes." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:101 +#: ../../docs/tutorials/3d/particles/collision.rst:95 msgid "A height field collision node is shaped like a box. The ``Extents`` property controls its size. Extents always measure half of the sides of its bounds, so a value of ``(X=1.0,Y=1.0,Z=1.0)`` creates a box that is 2 meters wide on each side. Anything outside of the node's extents is ignored for height field creation." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:105 +#: ../../docs/tutorials/3d/particles/collision.rst:99 msgid "The ``Resolution`` property controls how detailed the height field is. A lower resolution performs faster at the cost of accuracy. If the height field resolution is too low, it may look like particles penetrate level geometry or get stuck in the air during collision events. They might also ignore some smaller meshes completely." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:109 +#: ../../docs/tutorials/3d/particles/collision.rst:103 msgid "Height field resolutions" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:112 +#: ../../docs/tutorials/3d/particles/collision.rst:106 msgid "At low resolutions, height field collision misses some finer details (left)" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:114 +#: ../../docs/tutorials/3d/particles/collision.rst:108 msgid "The ``Update Mode`` property controls when the height field is recreated from the meshes within its bounds. Set it to ``When Moved`` to make it refresh only when it moves. This performs well and is suited for static scenes that don't change very often. If you need particles to collide with dynamic objects that change position frequently, you can select ``Always`` to refresh every frame. This comes with a cost to performance and should only be used when necessary." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:122 +#: ../../docs/tutorials/3d/particles/collision.rst:116 msgid "It's important to remember that when ``Update Mode`` is set to ``When Moved``, it is the *height field node* whose movement triggers an update. The height field is not updated when one of the meshes inside it moves." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:125 +#: ../../docs/tutorials/3d/particles/collision.rst:119 msgid "The ``Follow Camera Enabled`` property makes the height field follow the current camera when enabled. It will update whenever the camera moves. This property can be used to make sure that there is always particle collision around the player while not wasting performance on regions that are out of sight or too far away." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:130 +#: ../../docs/tutorials/3d/particles/collision.rst:124 msgid "SDF collision" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:132 +#: ../../docs/tutorials/3d/particles/collision.rst:126 msgid "Particle collision SDF" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:136 +#: ../../docs/tutorials/3d/particles/collision.rst:130 msgid "SDF collision in the node list" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:138 +#: ../../docs/tutorials/3d/particles/collision.rst:132 msgid "SDF collision nodes create a `signed distance field `_ that particles can collide with. SDF collision is similar to height field collision in that it turns multiple meshes within its bounds into a single collision volume for particles. A major difference is that signed distance fields can represent holes, tunnels and overhangs, which is impossible to do with height fields alone. The performance overhead is larger compared to height fields, so they're best suited for small-to-medium-sized environments." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:144 +#: ../../docs/tutorials/3d/particles/collision.rst:138 msgid "To create an SDF collision node, add a new child node to your scene and select ``GPUParticlesCollisionSDF3D`` from the list of available nodes. SDF collision nodes have to be baked in order to have any effect on particles in the level. To do that, click the :button:`Bake SDF` button in the viewport toolbar while the SDF collision node is selected and choose a directory to store the baked data. Since SDF collision needs to be baked in the editor, it's static and cannot change at runtime." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:150 +#: ../../docs/tutorials/3d/particles/collision.rst:144 msgid "SDF particle collision" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:153 +#: ../../docs/tutorials/3d/particles/collision.rst:147 msgid "SDF particle collision allows for very detailed 3-dimensional collision shapes" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:155 +#: ../../docs/tutorials/3d/particles/collision.rst:149 msgid "An SDF collision node is shaped like a box. The ``Extents`` property controls its size. Extents always measure half of the sides of its bounds, so a value of ``(X=1.0,Y=1.0,Z=1.0)`` creates a box that is 2 meters wide on each side. Anything outside of the node's extents is ignored for collision." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:159 +#: ../../docs/tutorials/3d/particles/collision.rst:153 msgid "The ``Resolution`` property controls how detailed the distance field is. A lower resolution performs faster at the cost of accuracy. If the resolution is too low, it may look like particles penetrate level geometry or get stuck in the air during collision events. They might also ignore some smaller meshes completely." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:163 +#: ../../docs/tutorials/3d/particles/collision.rst:157 msgid "Resolution comparison" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:166 +#: ../../docs/tutorials/3d/particles/collision.rst:160 msgid "The same area covered by a signed distance field at different resolutions: 16 (left) and 256 (right)" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:168 +#: ../../docs/tutorials/3d/particles/collision.rst:162 msgid "The ``Thickness`` property gives the distance field, which is usually hollow on the inside, a thickness to prevent particles from penetrating at high speeds. If you find that some particles don't collide with the level geometry and instead shoot right through it, try setting this property to a higher value." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:172 +#: ../../docs/tutorials/3d/particles/collision.rst:166 msgid "The ``Bake Mask`` property controls which meshes will be considered when the SDF is baked. Only meshes that render on the active layers in the bake mask contribute to particle collision." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:176 +#: ../../docs/tutorials/3d/particles/collision.rst:170 msgid "Troubleshooting" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:178 +#: ../../docs/tutorials/3d/particles/collision.rst:172 msgid "For particle collision to work, the particle's :ref:`visibility AABB ` must overlap with the collider's AABB. If collisions appear to be not working despite colliders being set up, generate an updated visibility AABB by selecting the GPUParticles3D node and choosing **GPUParticles3D > Generate Visibility AABB…** at the top of the 3D editor viewport." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:184 +#: ../../docs/tutorials/3d/particles/collision.rst:178 msgid "If the particles move fast and colliders are thin. There are two solutions for this:" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:186 +#: ../../docs/tutorials/3d/particles/collision.rst:180 msgid "Make the colliders thicker. For instance, if particles cannot get below a solid floor, you could make the collider representing the floor thicker than its actual visual representation. The heightfield collider automatically handles this by design, as heightfields cannot represent \"room over room\" collision." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:191 +#: ../../docs/tutorials/3d/particles/collision.rst:185 msgid "Increased ``Fixed FPS`` in the GPUParticles3D node, which will perform collision checks more often. This comes at a performance cost, so avoid setting this too high." msgstr "" diff --git a/sphinx/templates/tutorials/3d/particles/complex_shapes.pot b/sphinx/templates/tutorials/3d/particles/complex_shapes.pot index 7da0010343..9e75434791 100644 --- a/sphinx/templates/tutorials/3d/particles/complex_shapes.pot +++ b/sphinx/templates/tutorials/3d/particles/complex_shapes.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/particles/creating_a_3d_particle_system.pot b/sphinx/templates/tutorials/3d/particles/creating_a_3d_particle_system.pot index 17501bf8f3..d7a69ba1e5 100644 --- a/sphinx/templates/tutorials/3d/particles/creating_a_3d_particle_system.pot +++ b/sphinx/templates/tutorials/3d/particles/creating_a_3d_particle_system.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/particles/index.pot b/sphinx/templates/tutorials/3d/particles/index.pot index ef536d68cd..79bc37d456 100644 --- a/sphinx/templates/tutorials/3d/particles/index.pot +++ b/sphinx/templates/tutorials/3d/particles/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/particles/process_material_properties.pot b/sphinx/templates/tutorials/3d/particles/process_material_properties.pot index ca0e2efa6a..0de28faacb 100644 --- a/sphinx/templates/tutorials/3d/particles/process_material_properties.pot +++ b/sphinx/templates/tutorials/3d/particles/process_material_properties.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/particles/properties.pot b/sphinx/templates/tutorials/3d/particles/properties.pot index 40bb3a6760..16d847cfcb 100644 --- a/sphinx/templates/tutorials/3d/particles/properties.pot +++ b/sphinx/templates/tutorials/3d/particles/properties.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/particles/subemitters.pot b/sphinx/templates/tutorials/3d/particles/subemitters.pot index 6cfe5a0b2a..673bbf8433 100644 --- a/sphinx/templates/tutorials/3d/particles/subemitters.pot +++ b/sphinx/templates/tutorials/3d/particles/subemitters.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/particles/trails.pot b/sphinx/templates/tutorials/3d/particles/trails.pot index 26c3fc9d5a..16aaa41296 100644 --- a/sphinx/templates/tutorials/3d/particles/trails.pot +++ b/sphinx/templates/tutorials/3d/particles/trails.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/particles/turbulence.pot b/sphinx/templates/tutorials/3d/particles/turbulence.pot index eec32e661b..62b6cbaa7c 100644 --- a/sphinx/templates/tutorials/3d/particles/turbulence.pot +++ b/sphinx/templates/tutorials/3d/particles/turbulence.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/physical_light_and_camera_units.pot b/sphinx/templates/tutorials/3d/physical_light_and_camera_units.pot index 03f96f3111..7a19c44ca5 100644 --- a/sphinx/templates/tutorials/3d/physical_light_and_camera_units.pot +++ b/sphinx/templates/tutorials/3d/physical_light_and_camera_units.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/procedural_geometry/arraymesh.pot b/sphinx/templates/tutorials/3d/procedural_geometry/arraymesh.pot index b2d02ccaba..9e05540970 100644 --- a/sphinx/templates/tutorials/3d/procedural_geometry/arraymesh.pot +++ b/sphinx/templates/tutorials/3d/procedural_geometry/arraymesh.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -40,6 +40,7 @@ msgid "Common elements of ``arrays`` are listed below, together with the positio msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:29 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:327 msgid "Index" msgstr "" @@ -52,6 +53,7 @@ msgid "Array type" msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:33 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:332 msgid "0" msgstr "" @@ -64,6 +66,7 @@ msgid ":ref:`PackedVector3Array ` or :ref:`PackedVecto msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:37 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:337 msgid "1" msgstr "" @@ -76,6 +79,7 @@ msgid ":ref:`PackedVector3Array `" msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:41 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:342 msgid "2" msgstr "" @@ -88,6 +92,7 @@ msgid ":ref:`PackedFloat32Array ` or :ref:`PackedFloat msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:46 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:347 msgid "3" msgstr "" @@ -205,21 +210,116 @@ msgid "Put together, the full code looks like:" msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:229 -msgid "The code that goes in the middle can be whatever you want. Below we will present some example code for generating a sphere." +msgid "The code that goes in the middle can be whatever you want. Below we will present some example code for generating shapes, starting with a rectangle." msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:233 -msgid "Generating geometry" +msgid "Generating a rectangle" msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:235 +msgid "Since we are using ``Mesh.PRIMITIVE_TRIANGLES`` to render, we will construct a rectangle with triangles." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:238 +msgid "A rectangle is formed by two triangles sharing four vertices. For our example, we will create a rectangle with its top left point at ``(0, 0, 0)`` with a width and length of one as shown below:" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:241 +msgid "A rectangle made of two triangles sharing four vertices." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:245 +msgid "To draw this rectangle, define the coordinates of each vertex in the ``verts`` array." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:267 +msgid "The ``uvs`` array helps describe where parts of a texture should go onto the mesh. The values range from 0 to 1. Depending on your texture, you may want to change these values." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:290 +msgid "The ``normals`` array is used to describe the direction the vertices face and is used in lighting calculations. For this example, we will default to the ``Vector3.UP`` direction." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:314 +msgid "The ``indices`` array defines the order vertices are drawn. Godot renders in a *clockwise* direction, meaning that we must specify the vertices of a triangle we want to draw in clockwise order." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:318 +msgid "For example, to draw the first triangle, we will want to draw the vertices ``(0, 0, 0)``, ``(1, 0, 0)``, and ``(0, 0, 1)`` in that order. This is the same as drawing ``vert[0]``, ``vert[2]``, and ``vert[1]``, i.e., indices 0, 2, and 1, in the ``verts`` array. These index values are what the ``indices`` array defines." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:328 +msgid "``verts[Index]``" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:329 +msgid "``uvs[Index]``" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:330 +msgid "``normals[Index]``" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:333 +msgid "(0, 0, 0)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:334 +msgid "(0, 0)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:335 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:340 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:345 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:350 +msgid "Vector3.UP" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:338 +msgid "(0, 0, 1)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:339 +msgid "(1, 0)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:343 +msgid "(1, 0, 0)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:344 +msgid "(0, 1)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:348 +msgid "(1, 0, 1)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:349 +msgid "(1, 1)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:368 +msgid "Put together, the rectangle generation code looks like:" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:451 +msgid "For a more complex example, see the sphere generation section below." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:454 +msgid "Generating a sphere" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:456 msgid "Here is sample code for generating a sphere. Although the code is presented in GDScript, there is nothing Godot specific about the approach to generating it. This implementation has nothing in particular to do with ArrayMeshes and is just a generic approach to generating a sphere. If you are having trouble understanding it or want to learn more about procedural geometry in general, you can use any tutorial that you find online." msgstr "" -#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:350 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:571 msgid "Saving" msgstr "" -#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:352 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:573 msgid "Finally, we can use the :ref:`ResourceSaver ` class to save the ArrayMesh. This is useful when you want to generate a mesh and then use it later without having to re-generate it." msgstr "" diff --git a/sphinx/templates/tutorials/3d/procedural_geometry/immediatemesh.pot b/sphinx/templates/tutorials/3d/procedural_geometry/immediatemesh.pot index 105c4988ce..2b23e47447 100644 --- a/sphinx/templates/tutorials/3d/procedural_geometry/immediatemesh.pot +++ b/sphinx/templates/tutorials/3d/procedural_geometry/immediatemesh.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/procedural_geometry/index.pot b/sphinx/templates/tutorials/3d/procedural_geometry/index.pot index 1f7b9f6a27..1238580d2d 100644 --- a/sphinx/templates/tutorials/3d/procedural_geometry/index.pot +++ b/sphinx/templates/tutorials/3d/procedural_geometry/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/procedural_geometry/meshdatatool.pot b/sphinx/templates/tutorials/3d/procedural_geometry/meshdatatool.pot index e9fe5fa960..4cefac1d6e 100644 --- a/sphinx/templates/tutorials/3d/procedural_geometry/meshdatatool.pot +++ b/sphinx/templates/tutorials/3d/procedural_geometry/meshdatatool.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/procedural_geometry/surfacetool.pot b/sphinx/templates/tutorials/3d/procedural_geometry/surfacetool.pot index 6ada514ec4..d37cab45f0 100644 --- a/sphinx/templates/tutorials/3d/procedural_geometry/surfacetool.pot +++ b/sphinx/templates/tutorials/3d/procedural_geometry/surfacetool.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -43,18 +43,18 @@ msgstr "" msgid "You can optionally add an index array, either by calling ``add_index()`` and adding vertices to the index array manually, or by calling ``index()`` once, which generates the index array automatically and shrinks the vertex array to remove duplicate vertices." msgstr "" -#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:166 +#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:175 msgid "Similarly, if you have an index array, but you want each vertex to be unique (e.g. because you want to use unique normals or colors per face instead of per-vertex), you can call ``deindex()``." msgstr "" -#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:178 +#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:187 msgid "If you don't add custom normals yourself, you can add them using ``generate_normals()``, which should be called after generating geometry and before committing the mesh using ``commit()`` or ``commit_to_arrays()``. Calling ``generate_normals(true)`` will flip the resulting normals. As a side note, ``generate_normals()`` only works if the primitive type is set to ``Mesh.PRIMITIVE_TRIANGLES``." msgstr "" -#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:183 +#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:192 msgid "You may notice that normal mapping or other material properties look broken on the generated mesh. This is because normal mapping **requires** the mesh to feature *tangents*, which are separate from *normals*. You can either add custom tangents manually, or generate them automatically with ``generate_tangents()``. This method requires that each vertex have UVs and normals set already." msgstr "" -#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:203 +#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:212 msgid "By default, when generating normals, they will be calculated on a per-vertex basis (i.e. they will be \"smooth normals\"). If you want flat vertex normals (i.e. a single normal vector per face), when adding vertices, call ``add_smooth_group(i)`` where ``i`` is a unique number per vertex. ``add_smooth_group()`` needs to be called while building the geometry, e.g. before the call to ``add_vertex()``." msgstr "" diff --git a/sphinx/templates/tutorials/3d/resolution_scaling.pot b/sphinx/templates/tutorials/3d/resolution_scaling.pot index d6c8aaf4a5..fe73405f8b 100644 --- a/sphinx/templates/tutorials/3d/resolution_scaling.pot +++ b/sphinx/templates/tutorials/3d/resolution_scaling.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/spring_arm.pot b/sphinx/templates/tutorials/3d/spring_arm.pot index 5e870db769..d05fc552a0 100644 --- a/sphinx/templates/tutorials/3d/spring_arm.pot +++ b/sphinx/templates/tutorials/3d/spring_arm.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/standard_material_3d.pot b/sphinx/templates/tutorials/3d/standard_material_3d.pot index 0ff605ab56..a30da2b40b 100644 --- a/sphinx/templates/tutorials/3d/standard_material_3d.pot +++ b/sphinx/templates/tutorials/3d/standard_material_3d.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -208,11 +208,11 @@ msgid "**Add:** The final color of the object is added to the color of the scree msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:188 -msgid "**Sub:** The final color of the object is subtracted from the color of the screen." +msgid "**Subtract:** The final color of the object is subtracted from the color of the screen." msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:190 -msgid "**Mul:** The final color of the object is multiplied with the color of the screen." +msgid "**Multiply:** The final color of the object is multiplied with the color of the screen." msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:192 @@ -280,645 +280,689 @@ msgid "Disabling this makes the most sense for drawing indicators in world space msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:245 -msgid "Shading" +msgid "Depth Test" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:248 -msgid "Shading mode" +#: ../../docs/tutorials/3d/standard_material_3d.rst:247 +msgid "This can be used to invert the standard depth test. When set to **Inverted**, the object will only appear when occluded, and will be hidden otherwise." msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:250 +msgid "This has no effect if **No Depth Test** is enabled." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:255 +msgid "Shading" +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:258 +msgid "Shading mode" +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:260 msgid "Materials support three shading modes: **Per-Pixel**, **Per-Vertex**, and **Unshaded**." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:253 +#: ../../docs/tutorials/3d/standard_material_3d.rst:263 msgid "Three spheres showing the Per-Pixel, Per-Vertex, and Unshaded modes." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:257 +#: ../../docs/tutorials/3d/standard_material_3d.rst:267 msgid "The **Per-Pixel** shading mode calculates lighting for each pixel, and is a good fit for most use cases. However, in some cases you may want to increase performance by using another shading mode." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:261 +#: ../../docs/tutorials/3d/standard_material_3d.rst:271 msgid "The **Per-Vertex** shading mode, often called \"vertex shading\" or \"vertex lighting\", instead calculates lighting once for each vertex, and interpolates the result between each pixel." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:265 +#: ../../docs/tutorials/3d/standard_material_3d.rst:275 msgid "On low-end or mobile devices, using per-vertex lighting can considerably increase rendering performance. When rendering several layers of transparency, such as when using particle systems, using per-vertex shading can improve performance, especially when the camera is close to particles." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:270 +#: ../../docs/tutorials/3d/standard_material_3d.rst:280 msgid "You can also use per-vertex lighting to achieve a retro look." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:272 +#: ../../docs/tutorials/3d/standard_material_3d.rst:282 msgid "Two cubes with a brick texture, one shaded and one unshaded." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:276 +#: ../../docs/tutorials/3d/standard_material_3d.rst:286 msgid "Texture from `AmbientCG `__" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:278 +#: ../../docs/tutorials/3d/standard_material_3d.rst:288 msgid "The **Unshaded** shading mode does not calculate lighting at all. Instead, the **Albedo** color is output directly. Lights will not affect the material at all, and unshaded materials will tend to appear considerably brighter than shaded materials." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:283 +#: ../../docs/tutorials/3d/standard_material_3d.rst:293 msgid "Rendering unshaded is useful for some specific visual effects. If maximum performance is needed, it can also be used for particles, or low-end or mobile devices." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:288 +#: ../../docs/tutorials/3d/standard_material_3d.rst:298 msgid "Diffuse Mode" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:290 +#: ../../docs/tutorials/3d/standard_material_3d.rst:300 msgid "Specifies the algorithm used by diffuse scattering of light when hitting the object. The default is **Burley**. Other modes are also available:" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:293 +#: ../../docs/tutorials/3d/standard_material_3d.rst:303 msgid "**Burley:** Default mode, the original Disney Principled PBS diffuse algorithm." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:294 +#: ../../docs/tutorials/3d/standard_material_3d.rst:304 msgid "**Lambert:** Is not affected by roughness." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:295 +#: ../../docs/tutorials/3d/standard_material_3d.rst:305 msgid "**Lambert Wrap:** Extends Lambert to cover more than 90 degrees when roughness increases. Works great for hair and simulating cheap subsurface scattering. This implementation is energy conserving." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:298 +#: ../../docs/tutorials/3d/standard_material_3d.rst:308 msgid "**Toon:** Provides a hard cut for lighting, with smoothing affected by roughness. It is recommended you disable sky contribution from your environment's ambient light settings or disable ambient light in the StandardMaterial3D to achieve a better effect." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:306 +#: ../../docs/tutorials/3d/standard_material_3d.rst:316 msgid "Specular Mode" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:308 +#: ../../docs/tutorials/3d/standard_material_3d.rst:318 msgid "Specifies how the specular blob will be rendered. The specular blob represents the shape of a light source reflected in the object." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:311 +#: ../../docs/tutorials/3d/standard_material_3d.rst:321 msgid "**SchlickGGX:** The most common blob used by PBR 3D engines nowadays." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:312 +#: ../../docs/tutorials/3d/standard_material_3d.rst:322 msgid "**Toon:** Creates a toon blob, which changes size depending on roughness." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:313 +#: ../../docs/tutorials/3d/standard_material_3d.rst:323 msgid "**Disabled:** Sometimes the blob gets in the way. Begone!" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:318 +#: ../../docs/tutorials/3d/standard_material_3d.rst:328 msgid "Disable Ambient Light" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:320 +#: ../../docs/tutorials/3d/standard_material_3d.rst:330 msgid "Makes the object not receive any kind of ambient lighting that would otherwise light it." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:324 +#: ../../docs/tutorials/3d/standard_material_3d.rst:334 msgid "Disable Fog" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:326 +#: ../../docs/tutorials/3d/standard_material_3d.rst:336 msgid "Makes the object unaffected by depth-based or volumetric fog. This is useful for particles or other additively blended materials that would otherwise show the shape of the mesh (even in places where it would be invisible without the fog)." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:329 +#: ../../docs/tutorials/3d/standard_material_3d.rst:339 msgid "Disable Specular Occlusion" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:331 +#: ../../docs/tutorials/3d/standard_material_3d.rst:341 msgid "Makes the object not have its reflections reduced where they would usually be occluded." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:334 +#: ../../docs/tutorials/3d/standard_material_3d.rst:344 msgid "Vertex Color" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:336 +#: ../../docs/tutorials/3d/standard_material_3d.rst:346 msgid "This setting allows choosing what is done by default to vertex colors that come from your 3D modeling application. By default, they are ignored." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:342 +#: ../../docs/tutorials/3d/standard_material_3d.rst:352 msgid "Use as Albedo" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:344 +#: ../../docs/tutorials/3d/standard_material_3d.rst:354 msgid "Choosing this option means vertex color is used as albedo color." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:347 +#: ../../docs/tutorials/3d/standard_material_3d.rst:357 msgid "Is sRGB" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:349 +#: ../../docs/tutorials/3d/standard_material_3d.rst:359 msgid "Most 3D modeling software will likely export vertex colors as sRGB, so toggling this option on will help them look correct." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:353 +#: ../../docs/tutorials/3d/standard_material_3d.rst:363 msgid "Albedo" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:355 +#: ../../docs/tutorials/3d/standard_material_3d.rst:365 msgid "*Albedo* is the base color for the material, on which all the other settings operate. When set to *Unshaded*, this is the only color that is visible. In previous versions of Godot, this channel was named *Diffuse*. The change of name mainly happened because, in PBR (Physically Based Rendering), this color affects many more calculations than just the diffuse lighting path." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:361 +#: ../../docs/tutorials/3d/standard_material_3d.rst:371 msgid "Albedo color and texture can be used together as they are multiplied." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:363 +#: ../../docs/tutorials/3d/standard_material_3d.rst:373 msgid "*Alpha channel* in albedo color and texture is also used for the object transparency. If you use a color or texture with *alpha channel*, make sure to either enable transparency or *alpha scissoring* for it to work." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:368 +#: ../../docs/tutorials/3d/standard_material_3d.rst:378 msgid "Metallic" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:370 +#: ../../docs/tutorials/3d/standard_material_3d.rst:380 msgid "Godot uses a metallic model over competing models due to its simplicity. This parameter defines how reflective the material is. The more reflective, the less diffuse/ambient light affects the material and the more light is reflected. This model is called \"energy-conserving\"." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:375 +#: ../../docs/tutorials/3d/standard_material_3d.rst:385 msgid "The *Specular* parameter is a general amount for the reflectivity (unlike *Metallic*, this is not energy-conserving, so leave it at ``0.5`` and don't touch it unless you need to)." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:379 +#: ../../docs/tutorials/3d/standard_material_3d.rst:389 msgid "The minimum internal reflectivity is ``0.04``, so it's impossible to make a material completely unreflective, just like in real life." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:385 +#: ../../docs/tutorials/3d/standard_material_3d.rst:395 msgid "Roughness" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:387 +#: ../../docs/tutorials/3d/standard_material_3d.rst:397 msgid "*Roughness* affects the way reflection happens. A value of ``0`` makes it a perfect mirror while a value of ``1`` completely blurs the reflection (simulating natural microsurfacing). Most common types of materials can be achieved with the right combination of *Metallic* and *Roughness*." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:395 +#: ../../docs/tutorials/3d/standard_material_3d.rst:405 msgid "Emission" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:397 +#: ../../docs/tutorials/3d/standard_material_3d.rst:407 msgid "*Emission* specifies how much light is emitted by the material (keep in mind this does not include light surrounding geometry unless :ref:`VoxelGI ` or :ref:`SDFGI ` are used). This value is added to the resulting final image and is not affected by other lighting in the scene." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:405 +#: ../../docs/tutorials/3d/standard_material_3d.rst:415 msgid "Normal map" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:407 +#: ../../docs/tutorials/3d/standard_material_3d.rst:417 msgid "Normal mapping allows you to set a texture that represents finer shape detail. This does not modify geometry, only the incident angle for light. In Godot, only the red and green channels of normal maps are used for better compression and wider compatibility." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:416 +#: ../../docs/tutorials/3d/standard_material_3d.rst:426 msgid "Godot requires the normal map to use the X+, Y+ and Z+ coordinates, this is known as OpenGL style. If you've imported a material made to be used with another engine it may be DirectX style, in which case the normal map needs to be converted so its Y axis is flipped." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:421 +#: ../../docs/tutorials/3d/standard_material_3d.rst:431 msgid "More information about normal maps (including a coordinate order table for popular engines) can be found `here `__." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:426 +#: ../../docs/tutorials/3d/standard_material_3d.rst:436 msgid "Bent normal map" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:428 +#: ../../docs/tutorials/3d/standard_material_3d.rst:438 +msgid "*This is only available in the Forward+ and Mobile renderers, not the Compatibility renderer.*" +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:441 msgid "A bent normal map describes the average direction of ambient lighting. Unlike a regular normal map, this is used to improve how a material reacts to lighting rather than add surface detail." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:432 +#: ../../docs/tutorials/3d/standard_material_3d.rst:445 msgid "This is achieved in two ways:" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:434 +#: ../../docs/tutorials/3d/standard_material_3d.rst:447 msgid "Indirect diffuse lighting is made to match global illumination more closely." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:435 +#: ../../docs/tutorials/3d/standard_material_3d.rst:448 msgid "If specular occlusion is enabled, it is calculated using the bent normals and ambient occlusion instead of just from ambient light. This includes screen-space ambient occlusion (SSAO) and other sources of ambient occlusion." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:442 +#: ../../docs/tutorials/3d/standard_material_3d.rst:455 msgid "Godot only uses the red and green channels of a bent normal map for better compression and wider compatibility." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:445 +#: ../../docs/tutorials/3d/standard_material_3d.rst:458 msgid "When creating a bent normal map, there are three things required for it to work correctly in Godot:" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:448 +#: ../../docs/tutorials/3d/standard_material_3d.rst:461 msgid "A **cosine distribution** of rays has to be used when baking." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:449 +#: ../../docs/tutorials/3d/standard_material_3d.rst:462 msgid "The texture must be created in **tangent space**." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:450 +#: ../../docs/tutorials/3d/standard_material_3d.rst:463 msgid "The bent normal map needs to use the X+, Y+, and Z+ coordinates, this is known as OpenGL style. If you've imported a material made to be used with another engine it may be DirectX style, in which case the bent normal map needs to be converted so its Y axis is flipped. This can be achieved by setting the green channel under the **Channel Remap** section to **Inverted Green** in the import dock." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:459 +#: ../../docs/tutorials/3d/standard_material_3d.rst:472 msgid "A bent normal map is different from a regular normal map. The two are not interchangeable." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:463 +#: ../../docs/tutorials/3d/standard_material_3d.rst:476 msgid "Rim" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:465 +#: ../../docs/tutorials/3d/standard_material_3d.rst:478 msgid "Some fabrics have small micro-fur that causes light to scatter around it. Godot emulates this with the *Rim* parameter. Unlike other rim lighting implementations, which just use the emission channel, this one actually takes light into account (no light means no rim). This makes the effect considerably more believable." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:472 +#: ../../docs/tutorials/3d/standard_material_3d.rst:485 msgid "Rim size depends on roughness, and there is a special parameter to specify how it must be colored. If *Tint* is ``0``, the color of the light is used for the rim. If *Tint* is ``1``, then the albedo of the material is used. Using intermediate values generally works best." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:478 +#: ../../docs/tutorials/3d/standard_material_3d.rst:491 msgid "Clearcoat" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:481 +#: ../../docs/tutorials/3d/standard_material_3d.rst:494 msgid "The *Clearcoat* parameter is used to add a secondary pass of transparent coat to the material. This is common in car paint and toys. In practice, it's a smaller specular blob added on top of the existing material." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:488 +#: ../../docs/tutorials/3d/standard_material_3d.rst:501 msgid "Anisotropy" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:491 +#: ../../docs/tutorials/3d/standard_material_3d.rst:504 msgid "This changes the shape of the specular blob and aligns it to tangent space. Anisotropy is commonly used with hair, or to make materials such as brushed aluminum more realistic. It works especially well when combined with flowmaps." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:498 +#: ../../docs/tutorials/3d/standard_material_3d.rst:511 msgid "Ambient Occlusion" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:500 +#: ../../docs/tutorials/3d/standard_material_3d.rst:513 msgid "It is possible to specify a baked ambient occlusion map. This map affects how much ambient light reaches each surface of the object (it does not affect direct light by default). While it is possible to use Screen-Space Ambient Occlusion (SSAO) to generate ambient occlusion, nothing beats the quality of a well-baked AO map. It is recommended to bake ambient occlusion whenever possible." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:509 +#: ../../docs/tutorials/3d/standard_material_3d.rst:522 msgid "Height" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:511 +#: ../../docs/tutorials/3d/standard_material_3d.rst:524 msgid "Setting a height map on a material produces a ray-marched search to emulate the proper displacement of cavities along the view direction. This only creates an illusion of depth, and does not add real geometry — for a height map shape used for physics collision (such as terrain), see :ref:`class_HeightMapShape3D`. It may not work for complex objects, but it produces a realistic depth effect for textures. For best results, *Height* should be used together with normal mapping." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:522 +#: ../../docs/tutorials/3d/standard_material_3d.rst:535 msgid "Subsurface Scattering" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:524 +#: ../../docs/tutorials/3d/standard_material_3d.rst:537 msgid "*This is only available in the Forward+ renderer, not the Mobile or Compatibility renderers.*" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:527 +#: ../../docs/tutorials/3d/standard_material_3d.rst:540 msgid "This effect emulates light that penetrates an object's surface, is scattered, and then comes out. It is useful to create realistic skin, marble, colored liquids, etc." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:534 +#: ../../docs/tutorials/3d/standard_material_3d.rst:547 msgid "Back Lighting" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:536 +#: ../../docs/tutorials/3d/standard_material_3d.rst:549 msgid "This controls how much light from the lit side (visible to light) is transferred to the dark side (opposite from the light). This works well for thin objects such as plant leaves, grass, human ears, etc." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:543 +#: ../../docs/tutorials/3d/standard_material_3d.rst:556 msgid "Refraction" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:545 +#: ../../docs/tutorials/3d/standard_material_3d.rst:558 msgid "When refraction is enabled, Godot attempts to fetch information from behind the object being rendered. This allows distorting the transparency in a way similar to refraction in real life." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:549 +#: ../../docs/tutorials/3d/standard_material_3d.rst:562 msgid "Remember to use a transparent albedo texture (or reduce the albedo color's alpha channel) to make refraction visible, as refraction relies on transparency to have a visible effect." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:553 +#: ../../docs/tutorials/3d/standard_material_3d.rst:566 msgid "Refraction also takes the material roughness into account. Higher roughness values will make the objects behind the refraction look blurrier, which simulates real life behavior. If you can't see behind the object when refraction is enabled and albedo transparency is reduced, decrease the material's **Roughness** value." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:559 +#: ../../docs/tutorials/3d/standard_material_3d.rst:572 msgid "A normal map can optionally be specified in the **Refraction Texture** property to allow distorting the refraction's direction on a per-pixel basis." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:566 +#: ../../docs/tutorials/3d/standard_material_3d.rst:579 msgid "Refraction is implemented as a screen-space effect and forces the material to be transparent. This makes the effect relatively fast, but this results in some limitations:" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:570 +#: ../../docs/tutorials/3d/standard_material_3d.rst:583 msgid ":ref:`Transparency sorting ` issues may occur." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:572 +#: ../../docs/tutorials/3d/standard_material_3d.rst:585 msgid "The refractive material cannot refract onto itself, or onto other transparent materials. A refractive material behind another transparent material will be invisible." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:575 +#: ../../docs/tutorials/3d/standard_material_3d.rst:588 msgid "Off-screen objects cannot appear in the refraction. This is most noticeable with high refraction strength values." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:577 +#: ../../docs/tutorials/3d/standard_material_3d.rst:590 msgid "Opaque materials in front of the refractive material will appear to have \"refracted\" edges, even though they shouldn't." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:581 +#: ../../docs/tutorials/3d/standard_material_3d.rst:594 msgid "Detail" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:583 +#: ../../docs/tutorials/3d/standard_material_3d.rst:596 msgid "Godot allows using secondary albedo and normal maps to generate a detail texture, which can be blended in many ways. By combining this with secondary UV or triplanar modes, many interesting textures can be achieved." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:589 +#: ../../docs/tutorials/3d/standard_material_3d.rst:602 msgid "There are several settings that control how detail is used." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:591 +#: ../../docs/tutorials/3d/standard_material_3d.rst:604 msgid "Mask: The detail mask is a black and white image used to control where the blending takes place on a texture. White is for the detail textures, Black is for the regular material textures, different shades of gray are for partial blending of the material textures and detail textures." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:596 +#: ../../docs/tutorials/3d/standard_material_3d.rst:609 msgid "Blend Mode: These four modes control how the textures are blended together." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:598 +#: ../../docs/tutorials/3d/standard_material_3d.rst:611 msgid "Mix: Combines pixel values of both textures. At black, only show the material texture, at white, only show the detail texture. Values of gray create a smooth blend between the two." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:602 +#: ../../docs/tutorials/3d/standard_material_3d.rst:615 msgid "Add: Adds pixel values of one Texture with the other. Unlike mix mode both textures are completely mixed at white parts of a mask and not at gray parts. The original texture is mostly unchanged at black" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:606 +#: ../../docs/tutorials/3d/standard_material_3d.rst:619 msgid "Sub: Subtracts pixel values of one texture with the other. The second texture is completely subtracted at white parts of a mask with only a little subtraction in black parts, gray parts being different levels of subtraction based on the exact texture." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:611 +#: ../../docs/tutorials/3d/standard_material_3d.rst:624 msgid "Mul: Multiplies the RGB channel numbers for each pixel from the top texture with the values for the corresponding pixel from the bottom texture." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:614 +#: ../../docs/tutorials/3d/standard_material_3d.rst:627 msgid "Albedo: This is where you put an albedo texture you want to blend. If nothing is in this slot it will be interpreted as white by default." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:617 +#: ../../docs/tutorials/3d/standard_material_3d.rst:630 msgid "Normal: This is where you put a normal texture you want to blend. If nothing is in this slot it will be interpreted as a flat normal map. This can still be used even if the material does not have normal map enabled." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:622 +#: ../../docs/tutorials/3d/standard_material_3d.rst:635 msgid "UV1 and UV2" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:624 +#: ../../docs/tutorials/3d/standard_material_3d.rst:637 msgid "Godot supports two UV channels per material. Secondary UV is often useful for ambient occlusion or emission (baked light). UVs can be scaled and offset, which is useful when using repeating textures." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:631 +#: ../../docs/tutorials/3d/standard_material_3d.rst:644 msgid "Triplanar Mapping" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:633 +#: ../../docs/tutorials/3d/standard_material_3d.rst:646 msgid "Triplanar mapping is supported for both UV1 and UV2. This is an alternative way to obtain texture coordinates, sometimes called \"Autotexture\". Textures are sampled in X, Y and Z and blended by the normal. Triplanar mapping can be performed in either world space or object space." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:638 +#: ../../docs/tutorials/3d/standard_material_3d.rst:651 msgid "In the image below, you can see how all primitives share the same material with world triplanar, so the brick texture continues smoothly between them." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:644 +#: ../../docs/tutorials/3d/standard_material_3d.rst:657 msgid "World Triplanar" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:646 +#: ../../docs/tutorials/3d/standard_material_3d.rst:659 msgid "When using triplanar mapping, it is computed in object local space. This option makes it use world space instead." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:652 +#: ../../docs/tutorials/3d/standard_material_3d.rst:665 msgid "Sampling" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:655 +#: ../../docs/tutorials/3d/standard_material_3d.rst:668 msgid "Filter" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:657 +#: ../../docs/tutorials/3d/standard_material_3d.rst:670 msgid "The filtering method for the textures used by the material. See :ref:`this page` for a full list of options and their description." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:661 +#: ../../docs/tutorials/3d/standard_material_3d.rst:674 msgid "Repeat" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:663 +#: ../../docs/tutorials/3d/standard_material_3d.rst:676 msgid "if the textures used by the material repeat, and how they repeat. See :ref:`this page` for a full list of options and their description." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:667 +#: ../../docs/tutorials/3d/standard_material_3d.rst:680 msgid "Shadows" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:670 -msgid "Do Not Receive Shadows" -msgstr "" - -#: ../../docs/tutorials/3d/standard_material_3d.rst:672 -msgid "Makes the object not receive any kind of shadow that would otherwise be cast onto it." -msgstr "" - -#: ../../docs/tutorials/3d/standard_material_3d.rst:676 -msgid "Use Shadow to Opacity" -msgstr "" - -#: ../../docs/tutorials/3d/standard_material_3d.rst:678 -msgid "Lighting modifies the alpha so shadowed areas are opaque and non-shadowed areas are transparent. Useful for overlaying shadows onto a camera feed in AR." -msgstr "" - -#: ../../docs/tutorials/3d/standard_material_3d.rst:682 -msgid "Billboard" +#: ../../docs/tutorials/3d/standard_material_3d.rst:683 +msgid "Disable Receive Shadows" msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:685 -msgid "Billboard Mode" +msgid "Makes the object not receive any kind of shadow that would otherwise be cast onto it." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:687 -msgid "Enables billboard mode for drawing materials. This controls how the object faces the camera:" -msgstr "" - -#: ../../docs/tutorials/3d/standard_material_3d.rst:690 -msgid "**Disabled:** Billboard mode is disabled." +#: ../../docs/tutorials/3d/standard_material_3d.rst:689 +msgid "Shadow to Opacity" msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:691 -msgid "**Enabled:** Billboard mode is enabled. The object's -Z axis will always face the camera's viewing plane." +msgid "Lighting modifies the alpha so shadowed areas are opaque and non-shadowed areas are transparent. Useful for overlaying shadows onto a camera feed in AR." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:693 -msgid "**Y-Billboard:** The object's X axis will always be aligned with the camera's viewing plane." +#: ../../docs/tutorials/3d/standard_material_3d.rst:695 +msgid "Billboard" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:694 -msgid "**Particle Billboard:** Most suited for particle systems, because it allows specifying :ref:`flipbook animation `." +#: ../../docs/tutorials/3d/standard_material_3d.rst:698 +msgid "Billboard Mode" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:699 -msgid "The **Particles Anim** section is only visible when the billboard mode is **Particle Billboard**." +#: ../../docs/tutorials/3d/standard_material_3d.rst:700 +msgid "Enables billboard mode for drawing materials. This controls how the object faces the camera:" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:702 -msgid "Billboard Keep Scale" +#: ../../docs/tutorials/3d/standard_material_3d.rst:703 +msgid "**Disabled:** Billboard mode is disabled." msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:704 -msgid "Enables scaling a mesh in billboard mode." +msgid "**Enabled:** Billboard mode is enabled. The object's -Z axis will always face the camera's viewing plane." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:706 +msgid "**Y-Billboard:** The object's X axis will always be aligned with the camera's viewing plane." msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:707 +msgid "**Particle Billboard:** Most suited for particle systems, because it allows specifying :ref:`flipbook animation `." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:712 +msgid "The **Particles Anim** section is only visible when the billboard mode is **Particle Billboard**." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:715 +msgid "Billboard Keep Scale" +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:717 +msgid "Enables scaling a mesh in billboard mode." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:722 msgid "Grow" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:709 +#: ../../docs/tutorials/3d/standard_material_3d.rst:724 msgid "Grows the object vertices in the direction pointed by their normals:" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:713 +#: ../../docs/tutorials/3d/standard_material_3d.rst:728 msgid "This is commonly used to create cheap outlines. Add a second material pass, make it black and unshaded, reverse culling (Cull Front), and add some grow:" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:720 +#: ../../docs/tutorials/3d/standard_material_3d.rst:735 msgid "For Grow to work as expected, the mesh must have connected faces with shared vertices, or \"smooth shading\". If the mesh has disconnected faces with unique vertices, or \"flat shading\", the mesh will appear to have gaps when using Grow." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:725 -msgid "Transform" -msgstr "" - -#: ../../docs/tutorials/3d/standard_material_3d.rst:728 -msgid "Fixed Size" -msgstr "" - -#: ../../docs/tutorials/3d/standard_material_3d.rst:730 -msgid "This causes the object to be rendered at the same size no matter the distance. This is useful mostly for indicators (no depth test and high render priority) and some types of billboards." -msgstr "" - -#: ../../docs/tutorials/3d/standard_material_3d.rst:735 -msgid "Use Point Size" -msgstr "" - -#: ../../docs/tutorials/3d/standard_material_3d.rst:737 -msgid "This option is only effective when the geometry rendered is made of points (generally it's made of triangles when imported from 3D modeling software). If so, then those points can be resized (see below)." -msgstr "" - -#: ../../docs/tutorials/3d/standard_material_3d.rst:742 -msgid "Point Size" +#: ../../docs/tutorials/3d/standard_material_3d.rst:739 +msgid "Note that in Godot 4.5 onwards, stencil buffer-based outlines are available using the **Outline** :ref:`stencil mode `. This can be used as an alternative to Grow for outlines." msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:744 -msgid "When drawing points, specify the point size in pixels." +msgid "Transform" msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:747 -msgid "Use Particle Trails" +msgid "Fixed Size" msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:749 +msgid "This causes the object to be rendered at the same size no matter the distance. This is useful mostly for indicators (no depth test and high render priority) and some types of billboards." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:754 +msgid "Use Point Size" +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:756 +msgid "This option is only effective when the geometry rendered is made of points (generally it's made of triangles when imported from 3D modeling software). If so, then those points can be resized (see below)." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:761 +msgid "Point Size" +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:763 +msgid "When drawing points, specify the point size in pixels." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:766 +msgid "Use Particle Trails" +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:768 msgid "If true, enables parts of the shader required for GPUParticles3D trails to function. This also requires using a mesh with appropriate skinning, such as RibbonTrailMesh or TubeTrailMesh. Enabling this feature outside of materials used in GPUParticles3D meshes will break material rendering." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:755 +#: ../../docs/tutorials/3d/standard_material_3d.rst:774 msgid "Use Z Clip Scale" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:757 +#: ../../docs/tutorials/3d/standard_material_3d.rst:776 msgid "Scales the object being rendered towards the camera to avoid clipping into things like walls. This is intended to be used for objects that are fixed with respect to the camera like player arms, tools, etc. Lighting and shadows will continue to work correctly when this setting is adjusted, but screen-space effects like SSAO and SSR may break with lower scales. Therefore, try to keep this setting as close to 1.0 as possible." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:765 +#: ../../docs/tutorials/3d/standard_material_3d.rst:784 msgid "Use FOV Override" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:767 +#: ../../docs/tutorials/3d/standard_material_3d.rst:786 msgid "Overrides the ``Camera3D``'s field of view angle (in degrees)." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:771 +#: ../../docs/tutorials/3d/standard_material_3d.rst:790 msgid "This behaves as if the field of view is set on a ``Camera3D`` with ``Camera3D.keep_aspect`` set to ``Camera3D.KEEP_HEIGHT``. Additionally, it may not look correct on a non-perspective camera where the field of view setting is ignored." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:777 +#: ../../docs/tutorials/3d/standard_material_3d.rst:796 msgid "Proximity and Distance Fade" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:779 +#: ../../docs/tutorials/3d/standard_material_3d.rst:798 msgid "Godot allows materials to fade by proximity to each other as well as depending on the distance from the viewer. Proximity fade is useful for effects such as soft particles or a mass of water with a smooth blending to the shores." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:785 +#: ../../docs/tutorials/3d/standard_material_3d.rst:804 msgid "Distance fade is useful for light shafts or indicators that are only present after a given distance." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:788 +#: ../../docs/tutorials/3d/standard_material_3d.rst:807 msgid "Keep in mind enabling proximity fade or distance fade with **Pixel Alpha** mode enables alpha blending. Alpha blending is more GPU-intensive and can cause transparency sorting issues. Alpha blending also disables many material features such as the ability to cast shadows." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:795 +#: ../../docs/tutorials/3d/standard_material_3d.rst:814 msgid "To hide a character when they get too close to the camera, consider using **Pixel Dither** or better, **Object Dither** (which is even faster than **Pixel Dither**)." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:799 +#: ../../docs/tutorials/3d/standard_material_3d.rst:818 msgid "**Pixel Alpha** mode: The actual transparency of a pixel of the object changes with distance to the camera. This is the most effect, but forces the material into the transparency pipeline (which leads, for example, to no shadows)." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:805 +#: ../../docs/tutorials/3d/standard_material_3d.rst:824 msgid "**Pixel Dither** mode: What this does is sort of approximate the transparency by only having a fraction of the pixels rendered." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:810 +#: ../../docs/tutorials/3d/standard_material_3d.rst:829 msgid "**Object Dither** mode: Like the previous mode, but the calculated transparency is the same across the entire object's surface." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:816 +#: ../../docs/tutorials/3d/standard_material_3d.rst:837 +msgid "Stencil" +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:839 +msgid "Since Godot 4.5, Godot allows materials to make use of the stencil buffer. This feature is commonly used to create outlines and X-ray effects, which can be useful to highlight objects, especially behind walls." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:843 +msgid "The **Outline** and **X-Ray** modes assign a preconfigured stencil material in the material's **Next Pass** property. The **Custom** mode can be used for advanced effects." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:849 +msgid "Materials that write to the stencil buffer are always drawn in the transparent pass, so they are subject to the usual :ref:`transparency limitations `." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:855 +msgid "Like with the :ref:`Grow property `, for the stencil outline to work as expected, the mesh must have connected faces with shared vertices, or \"smooth shading\". If the mesh has disconnected faces with unique vertices, or \"flat shading\", the mesh will appear to have gaps when using a stencil outline." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:861 +msgid "Stencil outlines render similarly to the Grow property, but won't look identical in every scenario, especially when intersections with opaque surfaces are involved." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:865 msgid "Material Settings" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:819 +#: ../../docs/tutorials/3d/standard_material_3d.rst:868 msgid "Render priority" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:821 +#: ../../docs/tutorials/3d/standard_material_3d.rst:870 msgid "The rendering order of objects can be changed, although this is mostly useful for transparent objects (or opaque objects that perform depth draw but no color draw, such as cracks on the floor)." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:825 +#: ../../docs/tutorials/3d/standard_material_3d.rst:874 msgid "Objects are sorted by an opaque/transparent queue, then :ref:`render_priority`, with higher priority being drawn later. Transparent objects are also sorted by depth." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:828 +#: ../../docs/tutorials/3d/standard_material_3d.rst:877 msgid "Depth testing overrules priority. Priority alone cannot force opaque objects to be drawn over each other." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:831 +#: ../../docs/tutorials/3d/standard_material_3d.rst:880 msgid "Next Pass" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:833 +#: ../../docs/tutorials/3d/standard_material_3d.rst:882 msgid "Setting :ref:`next_pass` on a material will cause an object to be rendered again with that next material." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:836 +#: ../../docs/tutorials/3d/standard_material_3d.rst:885 msgid "Materials are sorted by an opaque/transparent queue, then :ref:`render_priority`, with higher priority being drawn later." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:841 +#: ../../docs/tutorials/3d/standard_material_3d.rst:890 msgid "Depth will test equal between both materials unless the grow setting or other vertex transformations are used. Multiple transparent passes should use :ref:`render_priority` to ensure correct ordering." msgstr "" diff --git a/sphinx/templates/tutorials/3d/using_decals.pot b/sphinx/templates/tutorials/3d/using_decals.pot index b59d31b292..3c90623f29 100644 --- a/sphinx/templates/tutorials/3d/using_decals.pot +++ b/sphinx/templates/tutorials/3d/using_decals.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/using_gridmaps.pot b/sphinx/templates/tutorials/3d/using_gridmaps.pot index b6ba8103af..0907b30693 100644 --- a/sphinx/templates/tutorials/3d/using_gridmaps.pot +++ b/sphinx/templates/tutorials/3d/using_gridmaps.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/using_multi_mesh_instance.pot b/sphinx/templates/tutorials/3d/using_multi_mesh_instance.pot index 889e1a2439..279236a228 100644 --- a/sphinx/templates/tutorials/3d/using_multi_mesh_instance.pot +++ b/sphinx/templates/tutorials/3d/using_multi_mesh_instance.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/using_transforms.pot b/sphinx/templates/tutorials/3d/using_transforms.pot index 6d4bf77da6..0d9354eaa8 100644 --- a/sphinx/templates/tutorials/3d/using_transforms.pot +++ b/sphinx/templates/tutorials/3d/using_transforms.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -232,73 +232,73 @@ msgid "You might be thinking at this point: **\"Ok, but how do I get angles from msgstr "" #: ../../docs/tutorials/3d/using_transforms.rst:244 -msgid "Imagine you need to shoot a bullet in the direction your player is facing. Just use the forward axis (commonly ``Z`` or ``-Z``)." +msgid "Imagine you need to shoot a bullet in the direction your player is facing. Just use the forward axis." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:257 +#: ../../docs/tutorials/3d/using_transforms.rst:263 msgid "Is the enemy looking at the player? Use the dot product for this (see the :ref:`doc_vector_math` tutorial for an explanation of the dot product):" msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:276 +#: ../../docs/tutorials/3d/using_transforms.rst:282 msgid "Strafe left:" msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:293 +#: ../../docs/tutorials/3d/using_transforms.rst:307 msgid "Jump:" msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:314 +#: ../../docs/tutorials/3d/using_transforms.rst:332 msgid "All common behaviors and logic can be done with just vectors." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:317 +#: ../../docs/tutorials/3d/using_transforms.rst:335 msgid "Setting information" msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:319 +#: ../../docs/tutorials/3d/using_transforms.rst:337 msgid "There are, of course, cases where you want to set information to a transform. Imagine a first person controller or orbiting camera. Those are definitely done using angles, because you *do want* the transforms to happen in a specific order." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:321 +#: ../../docs/tutorials/3d/using_transforms.rst:339 msgid "For such cases, keep the angles and rotations *outside* the transform and set them every frame. Don't try to retrieve and reuse them because the transform is not meant to be used this way." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:323 +#: ../../docs/tutorials/3d/using_transforms.rst:341 msgid "Example of looking around, FPS style:" msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:365 +#: ../../docs/tutorials/3d/using_transforms.rst:383 msgid "As you can see, in such cases it's even simpler to keep the rotation outside, then use the transform as the *final* orientation." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:368 +#: ../../docs/tutorials/3d/using_transforms.rst:386 msgid "Interpolating with quaternions" msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:370 +#: ../../docs/tutorials/3d/using_transforms.rst:388 msgid "Interpolating between two transforms can efficiently be done with quaternions. More information about how quaternions work can be found in other places around the Internet. For practical use, it's enough to understand that pretty much their main use is doing a closest path interpolation. As in, if you have two rotations, a quaternion will smoothly allow interpolation between them using the closest axis." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:372 +#: ../../docs/tutorials/3d/using_transforms.rst:390 msgid "Converting a rotation to quaternion is straightforward." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:395 +#: ../../docs/tutorials/3d/using_transforms.rst:413 msgid "The :ref:`class_Quaternion` type reference has more information on the datatype (it can also do transform accumulation, transform points, etc., though this is used less often). If you interpolate or apply operations to quaternions many times, keep in mind they need to be eventually normalized. Otherwise, they will also suffer from numerical precision errors." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:401 +#: ../../docs/tutorials/3d/using_transforms.rst:419 msgid "Quaternions are useful when doing camera/path/etc. interpolations, as the result will always be correct and smooth." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:404 +#: ../../docs/tutorials/3d/using_transforms.rst:422 msgid "Transforms are your friend" msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:406 +#: ../../docs/tutorials/3d/using_transforms.rst:424 msgid "For most beginners, getting used to working with transforms can take some time. However, once you get used to them, you will appreciate their simplicity and power." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:408 +#: ../../docs/tutorials/3d/using_transforms.rst:426 msgid "Don't hesitate to ask for help on this topic in any of Godot's `online communities `_ and, once you become confident enough, please help others!" msgstr "" diff --git a/sphinx/templates/tutorials/3d/variable_rate_shading.pot b/sphinx/templates/tutorials/3d/variable_rate_shading.pot index dd940d2acb..b056758c8b 100644 --- a/sphinx/templates/tutorials/3d/variable_rate_shading.pot +++ b/sphinx/templates/tutorials/3d/variable_rate_shading.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/3d/visibility_ranges.pot b/sphinx/templates/tutorials/3d/visibility_ranges.pot index 7ca66a2563..ed07215dd2 100644 --- a/sphinx/templates/tutorials/3d/visibility_ranges.pot +++ b/sphinx/templates/tutorials/3d/visibility_ranges.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -112,7 +112,7 @@ msgid "In the inspector of any node that inherits from GeometryInstance3D, you c msgstr "" #: ../../docs/tutorials/3d/visibility_ranges.rst:84 -msgid "**Begin:** The instance will be hidden when the camera is closer to the instance's *origin* than this value (in 3D units)." +msgid "**Begin:** The instance will be hidden when the camera is closer to the *center of the instance's AABB* (axis-aligned bounding box) than this value (in 3D units)." msgstr "" #: ../../docs/tutorials/3d/visibility_ranges.rst:86 @@ -120,7 +120,7 @@ msgid "**Begin Margin:** The hysteresis or alpha fade transition distance to use msgstr "" #: ../../docs/tutorials/3d/visibility_ranges.rst:89 -msgid "**End:** The instance will be hidden when the camera is further away from the instance's *origin* than this value (in 3D units)." +msgid "**End:** The instance will be hidden when the camera is further away from the *center of the instance's AABB* than this value (in 3D units)." msgstr "" #: ../../docs/tutorials/3d/visibility_ranges.rst:91 diff --git a/sphinx/templates/tutorials/3d/volumetric_fog.pot b/sphinx/templates/tutorials/3d/volumetric_fog.pot index 9b932d03df..e299dda3d6 100644 --- a/sphinx/templates/tutorials/3d/volumetric_fog.pot +++ b/sphinx/templates/tutorials/3d/volumetric_fog.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -140,7 +140,7 @@ msgid "While not physically accurate, it is possible to tune volumetric fog's se msgstr "" #: ../../docs/tutorials/3d/volumetric_fog.rst:125 -msgid "This can be done by setting volumetric fog density to the lowest permitted value *greater than zero* (``0.0001``), then increasing the **Volumetric Fog Energy** property on lights to much higher values than the default to compensate. Values between ``10000`` and ``100000`` usually work well for this." +msgid "This can be done by setting volumetric fog density to the lowest permitted value *greater than zero* (``0.0001``), then increasing the **Volumetric Fog Energy** property on lights to much higher values than the default to compensate. Values between ``200.0`` and ``5000.0`` usually work well for this." msgstr "" #: ../../docs/tutorials/3d/volumetric_fog.rst:133 diff --git a/sphinx/templates/tutorials/animation/2d_skeletons.pot b/sphinx/templates/tutorials/animation/2d_skeletons.pot index 1cfb3ba9c9..97ee02a5de 100644 --- a/sphinx/templates/tutorials/animation/2d_skeletons.pot +++ b/sphinx/templates/tutorials/animation/2d_skeletons.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/animation/animation_track_types.pot b/sphinx/templates/tutorials/animation/animation_track_types.pot index 71a91b7960..29ae37f446 100644 --- a/sphinx/templates/tutorials/animation/animation_track_types.pot +++ b/sphinx/templates/tutorials/animation/animation_track_types.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/animation/animation_tree.pot b/sphinx/templates/tutorials/animation/animation_tree.pot index e64813672f..89abdc0a5d 100644 --- a/sphinx/templates/tutorials/animation/animation_tree.pot +++ b/sphinx/templates/tutorials/animation/animation_tree.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -32,393 +32,393 @@ msgid "However, the support for blending those animations via ``AnimationPlayer` msgstr "" #: ../../docs/tutorials/animation/animation_tree.rst:15 -msgid ":ref:`AnimationTree ` is a new node introduced in Godot 3.1 to deal with advanced transitions. It replaces the ancient ``AnimationTreePlayer``, while adding a huge amount of features and flexibility." +msgid ":ref:`AnimationTree ` is a node designed to deal with advanced transitions." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:19 +#: ../../docs/tutorials/animation/animation_tree.rst:18 msgid "AnimationTree and AnimationPlayer" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:21 +#: ../../docs/tutorials/animation/animation_tree.rst:20 msgid "Before starting, know that an ``AnimationTree`` node does not contain its own animations. Instead, it uses animations contained in an ``AnimationPlayer`` node. You create, edit, or import your animations in an ``AnimationPlayer`` and then use an ``AnimationTree`` to control the playback." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:25 +#: ../../docs/tutorials/animation/animation_tree.rst:24 msgid "``AnimationPlayer`` and ``AnimationTree`` can be used in both 2D and 3D scenes. When importing 3D scenes and their animations, you can use `name suffixes `_ to simplify the process and import with the correct properties. At the end, the imported Godot scene will contain the animations in an ``AnimationPlayer`` node. Since you rarely use imported scenes directly in Godot (they are either instantiated or inherited from), you can place the ``AnimationTree`` node in your new scene which contains the imported one. Afterwards, point the ``AnimationTree`` node to the ``AnimationPlayer`` that was created in the imported scene." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:31 +#: ../../docs/tutorials/animation/animation_tree.rst:30 msgid "This is how it's done in the `Third Person Shooter demo `_, for reference:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:35 +#: ../../docs/tutorials/animation/animation_tree.rst:34 msgid "A new scene was created for the player with a ``CharacterBody3D`` as root. Inside this scene, the original ``.dae`` (Collada) file was instantiated and an ``AnimationTree`` node was created." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:39 +#: ../../docs/tutorials/animation/animation_tree.rst:38 msgid "Creating a tree" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:41 +#: ../../docs/tutorials/animation/animation_tree.rst:40 msgid "To use an ``AnimationTree``, you have to set a root node. An animation root node is a class that contains and evaluates sub-nodes and outputs an animation. There are 3 types of sub-nodes:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:44 +#: ../../docs/tutorials/animation/animation_tree.rst:43 msgid "Animation nodes, which reference an animation from the linked ``AnimationPlayer``." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:45 +#: ../../docs/tutorials/animation/animation_tree.rst:44 msgid "Animation Root nodes, which are used to blend sub-nodes and can be nested." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:46 +#: ../../docs/tutorials/animation/animation_tree.rst:45 msgid "Animation Blend nodes, which are used in an ``AnimationNodeBlendTree``, a 2D graph of nodes. Blend nodes take multiple input ports and give one output port." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:48 +#: ../../docs/tutorials/animation/animation_tree.rst:47 msgid "A few types of root nodes are available:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:52 +#: ../../docs/tutorials/animation/animation_tree.rst:51 msgid "``AnimationNodeAnimation``: Selects an animation from the list and plays it. This is the simplest root node, and generally not used as a root." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:53 +#: ../../docs/tutorials/animation/animation_tree.rst:52 msgid "``AnimationNodeBlendTree``: Contains multiple nodes as children in a graph. Many blend nodes are available, such as mix, blend2, blend3, one shot, etc." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:54 +#: ../../docs/tutorials/animation/animation_tree.rst:53 msgid "``AnimationNodeBlendSpace1D``: Allows linear blending between two animation nodes. Control the blend position in a 1D blend space to mix between animations." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:55 +#: ../../docs/tutorials/animation/animation_tree.rst:54 msgid "``AnimationNodeBlendSpace2D``: Allows linear blending between three animation nodes. Control the blend position in a 2D blend space to mix between animations." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:56 +#: ../../docs/tutorials/animation/animation_tree.rst:55 msgid "``AnimationNodeStateMachine``: Contains multiple nodes as children in a graph. Each node is used as a state, with multiple functions used to alternate between states." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:59 +#: ../../docs/tutorials/animation/animation_tree.rst:58 msgid "Blend tree" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:61 +#: ../../docs/tutorials/animation/animation_tree.rst:60 msgid "When you make an ``AnimationNodeBlendTree``, you get an empty 2d graph in the bottom panel, under the AnimationTree tab. It contains only an ``Output`` node by default." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:66 +#: ../../docs/tutorials/animation/animation_tree.rst:65 msgid "In order for animations to play, a node has to be connected to the output. You can add nodes from the **Add Node..** menu or by right clicking an empty space:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:70 +#: ../../docs/tutorials/animation/animation_tree.rst:69 msgid "The simplest connection to make is to connect an ``Animation`` node to the output directly, which will just play back the animation." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:74 +#: ../../docs/tutorials/animation/animation_tree.rst:73 msgid "Following is a description of the other available nodes:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:77 +#: ../../docs/tutorials/animation/animation_tree.rst:76 msgid "Blend2 / Blend3" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:79 +#: ../../docs/tutorials/animation/animation_tree.rst:78 msgid "These nodes will blend between two or three inputs by a user-specified blend value:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:83 +#: ../../docs/tutorials/animation/animation_tree.rst:82 msgid "Blending can use **filters** to control individually which tracks get blended and which do not. This can be useful for layering animations on top of each other." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:87 +#: ../../docs/tutorials/animation/animation_tree.rst:86 msgid "For more complex blending, it is recommended to use blend spaces instead." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:90 +#: ../../docs/tutorials/animation/animation_tree.rst:89 msgid "OneShot" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:92 +#: ../../docs/tutorials/animation/animation_tree.rst:91 msgid "This node will execute an animation once and return when it finishes. You can customize blend times for fading in and out, as well as filters." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:126 +#: ../../docs/tutorials/animation/animation_tree.rst:125 msgid "TimeSeek" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:128 +#: ../../docs/tutorials/animation/animation_tree.rst:127 msgid "This node allows you to seek to a time in the animation connected to its `in` input. Use this node to play an ``Animation`` starting from a certain playback position. Note that the seek request value is measured in seconds, so if you would like to play an animation from the beginning, set the value to ``0.0``, or if you would like to play an animation from 3 seconds in, set the value to ``3.0``." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:156 +#: ../../docs/tutorials/animation/animation_tree.rst:155 msgid "TimeScale" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:158 +#: ../../docs/tutorials/animation/animation_tree.rst:157 msgid "This node allows you to scale the speed of the animation connected to its `in` input. The speed of the animation will be multiplied by the number in the `scale` parameter. Setting the scale to 0 will pause the animation. Setting the scale to a negative number will play the animation backwards." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:164 +#: ../../docs/tutorials/animation/animation_tree.rst:163 msgid "Transition" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:166 +#: ../../docs/tutorials/animation/animation_tree.rst:165 msgid "This node is a simplified version of a StateMachine. You connect animations to the inputs, and the current state index determines which animation to play. You may specify a crossfade transition time. In the Inspector, you may change the number of input ports, rearrange inputs, or delete inputs." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:202 +#: ../../docs/tutorials/animation/animation_tree.rst:201 msgid "StateMachine" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:204 +#: ../../docs/tutorials/animation/animation_tree.rst:203 msgid "When you make an ``AnimationNodeStateMachine``, you get an empty 2d graph in the bottom panel, under the AnimationTree tab. It contains a ``Start`` and ``End`` state by default." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:209 +#: ../../docs/tutorials/animation/animation_tree.rst:208 msgid "To add states, right click or use the **create new nodes** button, whose icon is a plus in a box. You can add animations, blendspaces, blendtrees, or even another StateMachine. To edit one of these more complex sub-nodes, click on the pencil icon on the right of the state. To return to the original StateMachine, click **Root** on the top left of the panel." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:213 +#: ../../docs/tutorials/animation/animation_tree.rst:212 msgid "Before the StateMachine can do anything useful, the states must be connected with transitions. To add a transition, click the **connect nodes** button, which is a line with a right-facing arrow, and drag between two states. You can create 2 transitions between states, one going in each direction." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:218 +#: ../../docs/tutorials/animation/animation_tree.rst:217 msgid "There are 3 types of transitions:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:222 +#: ../../docs/tutorials/animation/animation_tree.rst:221 msgid "*Immediate*: Will switch to the next state immediately." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:223 +#: ../../docs/tutorials/animation/animation_tree.rst:222 msgid "*Sync*: Will switch to the next state immediately, but will seek the new state to the playback position of the old state." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:224 +#: ../../docs/tutorials/animation/animation_tree.rst:223 msgid "*At End*: Will wait for the current state playback to end, then switch to the beginning of the next state animation." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:226 +#: ../../docs/tutorials/animation/animation_tree.rst:225 msgid "Transitions also have a few properties. Click a transition and it will be displayed in the inspector:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:230 +#: ../../docs/tutorials/animation/animation_tree.rst:229 msgid "*Xfade Time* is the time to cross-fade between this state and the next." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:231 +#: ../../docs/tutorials/animation/animation_tree.rst:230 msgid "*Xfade Curve* is a cross-fade following a curve rather than a linear blend." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:232 +#: ../../docs/tutorials/animation/animation_tree.rst:231 msgid "*Reset* determines whether the state you are switching into plays from the beginning (true) or not (false)." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:233 +#: ../../docs/tutorials/animation/animation_tree.rst:232 msgid "*Priority* is used together with the ``travel()`` function from code (more on this later). Lower priority transitions are preferred when travelling through the tree." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:234 +#: ../../docs/tutorials/animation/animation_tree.rst:233 msgid "*Switch Mode* is the transition type (see above). It can be changed after creation here." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:235 +#: ../../docs/tutorials/animation/animation_tree.rst:234 msgid "*Advance Mode* determines the advance mode. If ``Disabled``, the transition will not be used. If ``Enabled``, the transition will only be used during ``travel()``. If ``Auto``, the transition will be used if the advance condition and expression are true, or if there are no advance conditions/expressions." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:238 +#: ../../docs/tutorials/animation/animation_tree.rst:237 msgid "Advance Condition and Advance Expression" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:240 +#: ../../docs/tutorials/animation/animation_tree.rst:239 msgid "The last 2 properties in a StateMachine transition are ``Advance Condition`` and ``Advance Expression.`` When the Advance Mode is set to *Auto*, these determine if the transition will advance or not." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:243 +#: ../../docs/tutorials/animation/animation_tree.rst:242 msgid "Advance Condition is a true/false check. You may put a custom variable name in the text field, and when the StateMachine reaches this transition, it will check if your variable is *true*. If so, the transition continues. Note that the advance condition **only** checks if a variable is *true*, and it cannot check for falseness." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:247 +#: ../../docs/tutorials/animation/animation_tree.rst:246 msgid "This gives the Advance Condition a very limited capability. If you wanted to make a transition back and forth based on one property, you would need to make 2 variables that have opposite values, and check if either of them are true. This is why, in Godot 4, the Advance Expression was added." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:250 +#: ../../docs/tutorials/animation/animation_tree.rst:249 msgid "The Advance Expression works similar to the Advance Condition, but instead of checking if one variable is true, it evaluates any expression. An expression is anything you could put in an ``if`` statement. These are all examples of expressions that would work in the Advance Expression:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:253 +#: ../../docs/tutorials/animation/animation_tree.rst:252 msgid "``is_walking``" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:254 +#: ../../docs/tutorials/animation/animation_tree.rst:253 msgid "``is_walking`` == true" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:255 +#: ../../docs/tutorials/animation/animation_tree.rst:254 msgid "``is_walking && !is_idle``" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:256 +#: ../../docs/tutorials/animation/animation_tree.rst:255 msgid "``velocity > 0``" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:257 +#: ../../docs/tutorials/animation/animation_tree.rst:256 msgid "``player.is_on_floor()``" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:259 +#: ../../docs/tutorials/animation/animation_tree.rst:258 msgid "Here is an example of an improperly-set-up StateMachine transition using Advance Condition:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:264 +#: ../../docs/tutorials/animation/animation_tree.rst:263 msgid "This is not working because there is a ``!`` variable in the Advance Condition, which cannot be checked." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:266 +#: ../../docs/tutorials/animation/animation_tree.rst:265 msgid "Here is the same example, set up properly, using two opposite variables:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:271 +#: ../../docs/tutorials/animation/animation_tree.rst:270 msgid "Here is the same example, but using Advance Expression rather than Advance Condition, which eliminates the need for two variables:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:277 +#: ../../docs/tutorials/animation/animation_tree.rst:276 msgid "In order to use Advance Expressions, the Advance Expression Base Node has to be set from the Inspector of the AnimationTree node. By default, it is set to the AnimationTree node itself, but it needs to point to whatever node contains the script with your animation variables." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:281 +#: ../../docs/tutorials/animation/animation_tree.rst:280 msgid "StateMachine travel" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:283 +#: ../../docs/tutorials/animation/animation_tree.rst:282 msgid "One of the nice features in Godot's ``StateMachine`` implementation is the ability to travel. You can instruct the graph to go from the current state to another one, while visiting all the intermediate ones. This is done via the A\\* algorithm. If there is no path of transitions starting at the current state and finishing at the destination state, the graph teleports to the destination state." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:287 +#: ../../docs/tutorials/animation/animation_tree.rst:286 msgid "To use the travel ability, you should first retrieve the :ref:`AnimationNodeStateMachinePlayback ` object from the ``AnimationTree`` node (it is exported as a property), and then call one of its many functions:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:301 +#: ../../docs/tutorials/animation/animation_tree.rst:300 msgid "The StateMachine must be running before you can travel. Make sure to either call ``start()`` or connect a node to **Start**." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:304 +#: ../../docs/tutorials/animation/animation_tree.rst:303 msgid "BlendSpace2D and BlendSpace1D" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:306 +#: ../../docs/tutorials/animation/animation_tree.rst:305 msgid "``BlendSpace2D`` is a node to do advanced blending in two dimensions. Points representing animations are added to a 2D space and then a position between them is controlled to determine the blending:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:311 +#: ../../docs/tutorials/animation/animation_tree.rst:310 msgid "You may place these points anywhere on the graph by right clicking or using the **add point** button, whose icon is a pen and point. Wherever you place the points, the triangle between them will be generated automatically using Delaunay. You may also control and label the ranges in X and Y." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:317 +#: ../../docs/tutorials/animation/animation_tree.rst:316 msgid "Finally, you may also change the blend mode. By default, blending happens by interpolating points inside the closest triangle. When dealing with 2D animations (frame by frame), you may want to switch to *Discrete* mode. Alternatively, if you want to keep the current play position when switching between discrete animations, there is a *Carry* mode. This mode can be changed in the *Blend* menu:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:323 +#: ../../docs/tutorials/animation/animation_tree.rst:322 msgid "BlendSpace1D works just like BlendSpace2D, but in one dimension (a line). Triangles are not used." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:328 +#: ../../docs/tutorials/animation/animation_tree.rst:327 msgid "For better blending" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:330 -msgid "In Godot 4.0+, in order for the blending results to be deterministic (reproducible and always consistent), the blended property values must have a specific initial value. For example, in the case of two animations to be blended, if one animation has a property track and the other does not, the blended animation is calculated as if the latter animation had a property track with the initial value." +#: ../../docs/tutorials/animation/animation_tree.rst:329 +msgid "For the blending results to be deterministic (reproducible and always consistent), the blended property values must have a specific initial value. For example, in the case of two animations to be blended, if one animation has a property track and the other does not, the blended animation is calculated as if the latter animation had a property track with the initial value." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:335 +#: ../../docs/tutorials/animation/animation_tree.rst:334 msgid "When using Position/Rotation/Scale 3D tracks for Skeleton3D bones, the initial value is Bone Rest. For other properties, the initial value is ``0`` and if the track is present in the ``RESET`` animation, the value of its first keyframe is used instead." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:339 +#: ../../docs/tutorials/animation/animation_tree.rst:338 msgid "For example, the following AnimationPlayer has two animations, but one of them lacks a Property track for Position." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:343 +#: ../../docs/tutorials/animation/animation_tree.rst:342 msgid "This means that the animation lacking that will treat those Positions as ``Vector2(0, 0)``." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:347 +#: ../../docs/tutorials/animation/animation_tree.rst:346 msgid "This problem can be solved by adding a Property track for Position as an initial value to the ``RESET`` animation." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:353 +#: ../../docs/tutorials/animation/animation_tree.rst:352 msgid "Be aware that the ``RESET`` animation exists to define the default pose when loading an object originally. It is assumed to have only one frame and is not expected to be played back using the timeline." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:356 +#: ../../docs/tutorials/animation/animation_tree.rst:355 msgid "Also keep in mind that the Rotation 3D tracks and the Property tracks for 2D rotation with Interpolation Type set to Linear Angle or Cubic Angle will prevent rotations greater than 180 degrees from the initial value as blended animation." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:360 +#: ../../docs/tutorials/animation/animation_tree.rst:359 msgid "This can be useful for Skeleton3Ds to prevent the bones penetrating the body when blending animations. Therefore, Skeleton3D's Bone Rest values should be as close to the midpoint of the movable range as possible. **This means that for humanoid models, it is preferable to import them in a T-pose**." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:366 +#: ../../docs/tutorials/animation/animation_tree.rst:365 msgid "You can see that the shortest rotation path from Bone Rests is prioritized rather than the shortest rotation path between animations." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:368 +#: ../../docs/tutorials/animation/animation_tree.rst:367 msgid "If you need to rotate Skeleton3D itself more than 180 degrees by blend animations for movement, you can use Root Motion." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:371 +#: ../../docs/tutorials/animation/animation_tree.rst:370 msgid "Root motion" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:373 +#: ../../docs/tutorials/animation/animation_tree.rst:372 msgid "When working with 3D animations, a popular technique is for animators to use the root skeleton bone to give motion to the rest of the skeleton. This allows animating characters in a way where steps actually match the floor below. It also allows precise interaction with objects during cinematics." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:376 +#: ../../docs/tutorials/animation/animation_tree.rst:375 msgid "When playing back the animation in Godot, it is possible to select this bone as the *root motion track*. Doing so will cancel the bone transformation visually (the animation will stay in place)." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:381 +#: ../../docs/tutorials/animation/animation_tree.rst:380 msgid "Afterwards, the actual motion can be retrieved via the :ref:`AnimationTree ` API as a transform:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:408 +#: ../../docs/tutorials/animation/animation_tree.rst:407 msgid "This can be fed to functions such as :ref:`CharacterBody3D.move_and_slide ` to control the character movement." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:410 +#: ../../docs/tutorials/animation/animation_tree.rst:409 msgid "There is also a tool node, ``RootMotionView``, you can place a scene that will act as a custom floor for your character and animations (this node is disabled by default during the game)." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:416 +#: ../../docs/tutorials/animation/animation_tree.rst:415 msgid "Controlling from code" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:418 +#: ../../docs/tutorials/animation/animation_tree.rst:417 msgid "After building the tree and previewing it, the only question remaining is \"How is all this controlled from code?\"." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:420 +#: ../../docs/tutorials/animation/animation_tree.rst:419 msgid "Keep in mind that the animation nodes are just resources, so they are shared between all instances using them. Setting values in the nodes directly will affect all instances of the scene that uses this ``AnimationTree``. This is generally undesirable, but does have some cool use cases, e.g. you can copy and paste parts of your animation tree, or reuse nodes with a complex layout (such as a StateMachine or blend space) in different animation trees." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:425 +#: ../../docs/tutorials/animation/animation_tree.rst:424 msgid "The actual animation data is contained in the ``AnimationTree`` node and is accessed via properties. Check the \"Parameters\" section of the ``AnimationTree`` node to see all the parameters that can be modified in real-time:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:430 +#: ../../docs/tutorials/animation/animation_tree.rst:429 msgid "This is handy because it makes it possible to animate them from an ``AnimationPlayer``, or even the ``AnimationTree`` itself, allowing very complex animation logic." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:433 +#: ../../docs/tutorials/animation/animation_tree.rst:432 msgid "To modify these values from code, you must obtain the property path. You can find them by hovering your mouse over any of the parameters:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:437 +#: ../../docs/tutorials/animation/animation_tree.rst:436 msgid "Then you can set or read them:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:450 +#: ../../docs/tutorials/animation/animation_tree.rst:449 msgid "Advance Expressions from a StateMachine will not be found under the parameters. This is because they are held in another script rather than the AnimationTree itself. Advance `Conditions` will be found under parameters." msgstr "" diff --git a/sphinx/templates/tutorials/animation/creating_movies.pot b/sphinx/templates/tutorials/animation/creating_movies.pot index 276da9e326..ea8b8a68a2 100644 --- a/sphinx/templates/tutorials/animation/creating_movies.pot +++ b/sphinx/templates/tutorials/animation/creating_movies.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/animation/cutout_animation.pot b/sphinx/templates/tutorials/animation/cutout_animation.pot index 6f7ba9125f..1fee84f7b9 100644 --- a/sphinx/templates/tutorials/animation/cutout_animation.pot +++ b/sphinx/templates/tutorials/animation/cutout_animation.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/animation/index.pot b/sphinx/templates/tutorials/animation/index.pot index 941bf46335..73ae39fcb7 100644 --- a/sphinx/templates/tutorials/animation/index.pot +++ b/sphinx/templates/tutorials/animation/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/animation/introduction.pot b/sphinx/templates/tutorials/animation/introduction.pot index 876997a634..21025f209e 100644 --- a/sphinx/templates/tutorials/animation/introduction.pot +++ b/sphinx/templates/tutorials/animation/introduction.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/animation/playing_videos.pot b/sphinx/templates/tutorials/animation/playing_videos.pot index a34cf2ce99..ab6339daa1 100644 --- a/sphinx/templates/tutorials/animation/playing_videos.pot +++ b/sphinx/templates/tutorials/animation/playing_videos.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -72,7 +72,7 @@ msgid "Handling resizing and different aspect ratios" msgstr "" #: ../../docs/tutorials/animation/playing_videos.rst:50 -msgid "By default in Godot 4.0, the VideoStreamPlayer will automatically be resized to match the video's resolution. You can make it follow usual :ref:`class_Control` sizing by enabling **Expand** on the VideoStreamPlayer node." +msgid "By default, the VideoStreamPlayer will automatically be resized to match the video's resolution. You can make it follow usual :ref:`class_Control` sizing by enabling **Expand** on the VideoStreamPlayer node." msgstr "" #: ../../docs/tutorials/animation/playing_videos.rst:54 diff --git a/sphinx/templates/tutorials/assets_pipeline/escn_exporter/index.pot b/sphinx/templates/tutorials/assets_pipeline/escn_exporter/index.pot index 6380daff34..019ef933ee 100644 --- a/sphinx/templates/tutorials/assets_pipeline/escn_exporter/index.pot +++ b/sphinx/templates/tutorials/assets_pipeline/escn_exporter/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/assets_pipeline/exporting_3d_scenes.pot b/sphinx/templates/tutorials/assets_pipeline/exporting_3d_scenes.pot index 163ddb9dde..a2dfd0b743 100644 --- a/sphinx/templates/tutorials/assets_pipeline/exporting_3d_scenes.pot +++ b/sphinx/templates/tutorials/assets_pipeline/exporting_3d_scenes.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/assets_pipeline/import_process.pot b/sphinx/templates/tutorials/assets_pipeline/import_process.pot index b20accde04..e986c473f0 100644 --- a/sphinx/templates/tutorials/assets_pipeline/import_process.pot +++ b/sphinx/templates/tutorials/assets_pipeline/import_process.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/advanced_import_settings.pot b/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/advanced_import_settings.pot index 4dc720f3c2..4ff72ad113 100644 --- a/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/advanced_import_settings.pot +++ b/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/advanced_import_settings.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -182,7 +182,7 @@ msgid "You want to configure material features not supported by your 3D applicat msgstr "" #: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/advanced_import_settings.rst:170 -msgid "You want to use a different texture filtering mode, as this option is configured in the material since Godot 4.0 (and not in the image)." +msgid "You want to use a different texture filtering mode, as this option is configured in the material (and not in the image)." msgstr "" #: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/advanced_import_settings.rst:172 diff --git a/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/available_formats.pot b/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/available_formats.pot index 6656badf64..a48799ea7e 100644 --- a/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/available_formats.pot +++ b/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/available_formats.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.pot b/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.pot index 26c20a09cb..5fc97a4ca0 100644 --- a/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.pot +++ b/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -175,7 +175,7 @@ msgid "**FBX**" msgstr "" #: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:164 -msgid "**Importer** Which import method is used. ubfx handles fbx files as fbx files. FBX2glTF converts FBX files to glTF on import and requires additional setup. FBX2glTF is not recommended unless you have a specific rason to use it over ufbx or working with a different file format." +msgid "**Importer** Which import method is used. ubfx handles fbx files as fbx files. FBX2glTF converts FBX files to glTF on import and requires additional setup. FBX2glTF is not recommended unless you have a specific reason to use it over ufbx or working with a different file format." msgstr "" #: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:168 @@ -299,7 +299,7 @@ msgid "Using animation libraries" msgstr "" #: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:291 -msgid "As of Godot 4.0, you can choose to import **only** animations from a glTF file and nothing else. This is used in some asset pipelines to distribute animations separately from models. For example, this allows you to use one set of animations for several characters, without having to duplicate animation data in every character." +msgid "You can also choose to import **only** animations from a glTF file and nothing else. This is used in some asset pipelines to distribute animations separately from models. For example, this allows you to use one set of animations for several characters, without having to duplicate animation data in every character." msgstr "" #: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:297 diff --git a/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/index.pot b/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/index.pot index a4da35fa28..4eacc0564e 100644 --- a/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/index.pot +++ b/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/model_export_considerations.pot b/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/model_export_considerations.pot index f779d05e16..8623c968bc 100644 --- a/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/model_export_considerations.pot +++ b/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/model_export_considerations.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.pot b/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.pot index 3274406bf9..a80e9e41c7 100644 --- a/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.pot +++ b/sphinx/templates/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/assets_pipeline/importing_audio_samples.pot b/sphinx/templates/tutorials/assets_pipeline/importing_audio_samples.pot index 25e4c7872c..7fbb4be362 100644 --- a/sphinx/templates/tutorials/assets_pipeline/importing_audio_samples.pot +++ b/sphinx/templates/tutorials/assets_pipeline/importing_audio_samples.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/assets_pipeline/importing_images.pot b/sphinx/templates/tutorials/assets_pipeline/importing_images.pot index af13cd7531..c93b56195d 100644 --- a/sphinx/templates/tutorials/assets_pipeline/importing_images.pot +++ b/sphinx/templates/tutorials/assets_pipeline/importing_images.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -176,615 +176,611 @@ msgid "Import options" msgstr "" #: ../../docs/tutorials/assets_pipeline/importing_images.rst:142 -msgid "In Godot 4.0, changing the texture filter and repeat mode is no longer done in the import options." +msgid "Since Godot 4.0, texture filter and repeat modes are set in the CanvasItem properties in 2D (with a project setting acting as a default), and in a :ref:`per-material configuration in 3D `. In custom shaders, filter and repeat mode is changed on the ``sampler2D`` uniform using hints described in the :ref:`doc_shading_language` documentation." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:145 -msgid "Instead, texture filter and repeat modes are changed in the CanvasItem properties in 2D (with a project setting acting as a default), and in a :ref:`per-material configuration in 3D `. In custom shaders, filter and repeat mode is changed on the ``sampler2D`` uniform using hints described in the :ref:`doc_shading_language` documentation." -msgstr "" - -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:155 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:152 msgid "Compress > Mode" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:157 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:154 msgid "Images are one of the largest assets in a game. To handle them efficiently, they need to be compressed. Godot offers several compression methods, depending on the use case." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:161 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:158 msgid "**Lossless:** This is the default and most common compression mode for 2D assets. It shows assets without any kind of artifacting, and disk compression is decent. It will use considerably more amount of video memory than VRAM Compression, though. This is also the recommended setting for pixel art." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:165 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:162 msgid "**Lossy:** This is a good choice for large 2D assets. It has some artifacts, but less than VRAM compression and the file size is several times lower compared to Lossless or VRAM Uncompressed. Video memory usage isn't decreased by this mode; it's the same as with Lossless or VRAM Uncompressed." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:169 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:166 msgid "**VRAM Compressed:** This is the default and most common compression mode for 3D assets. Size on disk is reduced and video memory usage is also decreased considerably (usually by a factor between 4 and 6). This mode should be avoided for 2D as it exhibits noticeable artifacts, especially for lower-resolution textures." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:174 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:171 msgid "**VRAM Uncompressed:** Only useful for formats that can't be compressed, such as raw floating-point images." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:176 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:173 msgid "**Basis Universal:** This alternative VRAM compression mode encodes the texture to a format that can be transcoded to most GPU-compressed formats at load-time. This provides very small files that make use of VRAM compression, at the cost of lower quality compared to VRAM Compressed and slow compression times. VRAM usage is usually the same as VRAM Compressed. Basis Universal does not support floating-point image formats (the engine will internally fall back to VRAM Compressed instead)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:186 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:183 msgid "Even in 3D, \"pixel art\" textures should have VRAM compression disabled as it will negatively affect their appearance, without improving performance significantly due to their low resolution." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:190 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:187 msgid "In this table, each of the 5 options are described together with their advantages and disadvantages (|good| = best, |bad| = worst):" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:211 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:208 msgid "good" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:209 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:206 msgid "bad" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:194 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:191 msgid "Compress mode" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:194 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:218 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:191 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:215 msgid "Lossless" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:194 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:218 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:191 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:215 msgid "Lossy" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:194 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:218 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:191 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:215 msgid "VRAM Compressed" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:194 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:218 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:191 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:215 msgid "VRAM Uncompressed" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:194 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:218 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:191 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:215 msgid "Basis Universal" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:196 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:193 msgid "**Description**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:196 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:193 msgid "Stored as Lossless WebP / PNG" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:196 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:193 msgid "Stored as Lossy WebP" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:196 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:193 msgid "Stored as S3TC, BPTC or ETC2 depending on platform" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:196 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:193 msgid "Stored as raw pixels" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:196 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:193 msgid "Transcoded to VRAM Compressed format" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:198 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:195 msgid "**Size on disk**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:198 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:195 msgid "|regular| Small" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:213 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:210 msgid "regular" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:198 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:195 msgid "|good| Very small" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:198 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:200 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:195 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:197 msgid "|bad| Large" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:200 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:197 msgid "**Memory usage**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:200 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:197 msgid "|good| Small" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:202 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:199 msgid "**Performance**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:202 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:206 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:199 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:203 msgid "|regular| Normal" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:202 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:206 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:199 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:203 msgid "|good| Fast" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:204 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:201 msgid "**Quality loss**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:204 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:201 msgid "|good| None" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:204 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:201 msgid "|regular| Slight" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:204 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:201 msgid "|bad| Moderate" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:206 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:203 msgid "**Load time**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:206 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:203 msgid "|bad| Slow" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:215 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:212 msgid "Estimated memory usage for a single RGBA8 texture with mipmaps enabled:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:218 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:215 msgid "Texture size" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:220 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:217 msgid "**128×128**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:220 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:222 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:217 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:219 msgid "|good| 85 KiB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:220 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:217 msgid "|good| 21 KiB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:222 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:219 msgid "**256×256**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:222 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:224 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:219 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:221 msgid "|good| 341 KiB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:224 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:221 msgid "**512×512**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:224 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:226 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:221 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:223 msgid "|good| 1.33 MiB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:226 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:223 msgid "**1024×1024**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:226 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:228 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:223 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:225 msgid "|regular| 5.33 MiB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:228 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:225 msgid "**2048×2048**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:228 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:230 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:225 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:227 msgid "|bad| 21.33 MiB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:230 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:227 msgid "**4096×4096**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:230 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:227 msgid "|bad| 85.33 MiB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:235 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:232 msgid "In the above table, memory usage will be reduced by 25% for images that do not have an alpha channel (RGB8). Memory usage will be further decreased by 25% for images that have mipmaps disabled." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:239 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:236 msgid "Notice how at larger resolutions, the impact of VRAM compression is much greater. With a 4:1 compression ratio (6:1 for opaque textures with S3TC), VRAM compression effectively allows a texture to be twice as large on each axis, while using the same amount of memory on the GPU." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:244 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:241 msgid "VRAM compression also reduces the memory bandwidth required to sample the texture, which can speed up rendering in memory bandwidth-constrained scenarios (which are frequent on integrated graphics and mobile). These factors combined make VRAM compression a must-have for 3D games with high-resolution textures." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:249 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:246 msgid "You can preview how much memory a texture takes by double-clicking it in the FileSystem dock, then looking at the Inspector:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:252 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:249 msgid "Previewing a texture in the Inspector" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:256 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:253 msgid "Previewing a texture in the Inspector. Credit: `Red Brick 03 - Poly Haven `__" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:259 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:256 msgid "Compress > High Quality" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:263 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:260 msgid "High-quality VRAM texture compression is only supported in the Forward+ and Mobile renderers." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:266 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:263 msgid "When using the Compatibility renderer, this option is always considered disabled." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:269 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:266 msgid "If enabled, uses BPTC compression on desktop platforms and :abbr:`ASTC (Adaptive Scalable Texture Compression)` compression on mobile platforms. When using BPTC, BC7 is used for SDR textures and BC6H is used for HDR textures." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:273 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:270 msgid "If disabled (default), uses the faster but lower-quality S3TC compression on desktop platforms and ETC2 on mobile/web platforms. When using S3TC, DXT1 (BC1) is used for opaque textures and DXT5 (BC3) is used for transparent or normal map (:abbr:`RGTC (Red-Green Texture Compression)`) textures." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:278 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:275 msgid "BPTC and ASTC support VRAM compression for HDR textures, but S3TC and ETC2 do not (see **HDR Compression** below)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:282 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:279 msgid "Compress > HDR Compression" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:286 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:283 msgid "This option only has an effect on textures that are imported as HDR formats in Godot (``.hdr`` and ``.exr`` files)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:289 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:286 msgid "If set to **Disabled**, never uses VRAM compression for HDR textures, regardless of whether they're opaque or transparent. Instead, the texture is converted to RGBE9995 (9-bits per channel + 5-bit exponent = 32 bits per pixel) to reduce memory usage compared to a half-float or single-precision float image format." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:294 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:291 msgid "If set to **Opaque Only** (default), only uses VRAM compression for opaque HDR textures. This is due to a limitation of HDR formats, as there is no VRAM-compressed HDR format that supports transparency at the same time." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:298 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:295 msgid "If set to **Always**, will force VRAM compression even for HDR textures with an alpha channel. To perform this, the alpha channel is discarded on import." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:302 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:299 msgid "Compress > Normal Map" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:304 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:301 msgid "When using a texture as normal map, only the red and green channels are required. Given regular texture compression algorithms produce artifacts that don't look that nice in normal maps, the :abbr:`RGTC (Red-Green Texture Compression)` compression format is the best fit for this data. Forcing this option to **Enable** will make Godot import the image as :abbr:`RGTC (Red-Green Texture Compression)` compressed. By default, it's set to **Detect**. This means that if the texture is ever detected to be used as a normal map, it will be changed to **Enable** and reimported automatically." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:312 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:309 msgid "Note that :abbr:`RGTC (Red-Green Texture Compression)` compression affects the resulting normal map image. You will have to adjust custom shaders that use the normal map's blue channel to take this into account. Built-in material shaders already ignore the blue channel in a normal map (regardless of the actual normal map's contents)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:318 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:315 msgid "In the example below, the normal map with :abbr:`RGTC (Red-Green Texture Compression)` compression is able to preserve its detail much better, while using the same amount of memory as a standard RGBA VRAM-compressed texture:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:322 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:326 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:319 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:323 msgid "Normal map with standard VRAM compression (left) and with RGTC VRAM compression (right)" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:330 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:439 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:327 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:436 msgid "Godot requires the normal map to use the X+, Y+ and Z+ coordinates, which is known as an OpenGL-style normal map. If you've imported a material made to be used with another engine, it may be DirectX-style. In this case, the normal map needs to be converted by enabling the **Normal Map Invert Y** import option." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:335 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:444 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:332 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:441 msgid "More information about normal maps (including a coordinate order table for popular engines) can be found `here `__." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:340 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:337 msgid "Compress > Channel Pack" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:342 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:339 msgid "If set to **sRGB Friendly** (default), prevents the RG color format from being used as it does not support sRGB color." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:345 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:342 msgid "If set to **Optimized**, allows the RG color format to be used if the texture does not use the blue channel." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:348 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:345 msgid "A third option **Normal Map (RG Channels)** is *only* available in layered textures (:ref:`class_Cubemap`, :ref:`class_CubemapArray`, :ref:`class_Texture2DArray` and :ref:`class_Texture3D`). This forces all layers from the texture to be imported with the RG color format, with only the red and green channels preserved. :abbr:`RGTC (Red-Green Texture Compression)` compression is able to preserve its detail much better, while using the same amount of memory as a standard RGBA VRAM-compressed texture. This only has an effect on textures with the **VRAM Compressed** or **Basis Universal** compression modes." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:360 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:357 msgid "Mipmaps > Generate" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:362 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:359 msgid "If enabled, smaller versions of the texture are generated on import. For example, a 64×64 texture will generate 6 mipmaps (32×32, 16×16, 8×8, 4×4, 2×2, 1×1). This has several benefits:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:366 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:363 msgid "Textures will not become grainy in the distance (in 3D), or if scaled down due to camera zoom or CanvasItem scale (in 2D)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:368 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:365 msgid "Performance will improve if the texture is displayed in the distance, since sampling smaller versions of the original texture is faster and requires less memory bandwidth." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:372 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:369 msgid "The downside of mipmaps is that they increase memory usage by roughly 33%." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:374 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:371 msgid "It's recommended to enable mipmaps in 3D. However, in 2D, this should only be enabled if your project visibly benefits from having mipmaps enabled. If the camera never zooms out significantly, there won't be a benefit to enabling mipmaps but memory usage will increase." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:380 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:377 msgid "Mipmaps > Limit" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:387 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:384 msgid "**Mipmaps > Limit** is currently not implemented and has no effect when changed." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:389 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:386 msgid "If set to a value greater than ``-1``, limits the maximum number of mipmaps that can be generated. This can be decreased if you don't want textures to become too low-resolution at extreme distances, at the cost of some graininess." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:394 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:391 msgid "Roughness > Mode" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:396 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:393 msgid "The color channel to consider as a roughness map in this texture. Only effective if **Roughness > Src Normal** is not empty." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:400 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:397 msgid "Roughness > Src Normal" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:402 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:399 msgid "The path to the texture to consider as a normal map for roughness filtering on import. Specifying this can help decrease specular aliasing slightly in 3D." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:405 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:402 msgid "Roughness filtering on import is only used in 3D rendering, not 2D." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:408 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:405 msgid "Process > Fix Alpha Border" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:410 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:407 msgid "This puts pixels of the same surrounding color in transition from transparent to opaque areas. For textures displayed with bilinear filtering, this helps mitigate the outline effect when exporting images from an image editor." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:416 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:413 msgid "It's recommended to leave this enabled (as it is by default), unless this causes issues for a particular image." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:420 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:417 msgid "Process > Premult Alpha" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:422 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:419 msgid "An alternative to fixing darkened borders with **Fix Alpha Border** is to use premultiplied alpha. By enabling this option, the texture will be converted to this format. A premultiplied alpha texture requires specific materials to be displayed correctly:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:427 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:424 msgid "In 2D, a :ref:`class_CanvasItemMaterial` will need to be created and configured to use the **Premul Alpha** blend mode on CanvasItems that use this texture. In :ref:`custom canvas item shaders `, ``render_mode blend_premul_alpha;`` should be used." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:431 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:428 msgid "In 3D, a :ref:`class_BaseMaterial3D` will need to be created and configured to use the **Premul Alpha** blend mode on materials that use this texture. In :ref:`custom spatial shaders `, ``render_mode blend_premul_alpha;`` should be used." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:437 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:434 msgid "Process > Normal Map Invert Y" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:449 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:446 msgid "Process > HDR as sRGB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:451 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:448 msgid "Some HDR images you can find online may be broken and contain sRGB color data (instead of linear color data). It is advised not to use those files. If you absolutely have to, enabling this option on will make them look correct." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:457 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:454 msgid "Enabling **HDR as sRGB** on well-formatted HDR images will cause the resulting image to look too dark, so leave this disabled if unsure." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:461 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:458 msgid "Process > HDR Clamp Exposure" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:463 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:460 msgid "Some HDR panorama images you can find online may contain extremely bright pixels, due to being taken from real life sources without any clipping." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:466 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:463 msgid "While these HDR panorama images are accurate to real life, this can cause the radiance map generated by Godot to contain sparkles when used as a background sky. This can be seen in material reflections (even on rough materials in extreme cases). Enabling **HDR Clamp Exposure** can resolve this using a smart clamping formula that does not introduce *visible* clipping – glow will keep working when looking at the background sky." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:474 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:471 msgid "Process > Size Limit" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:476 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:473 msgid "If set to a value greater than ``0``, the size of the texture is limited on import to a value smaller than or equal to the value specified here. For non-square textures, the size limit affects the longer dimension, with the shorter dimension scaled to preserve aspect ratio. Resizing is performed using cubic interpolation." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:482 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:479 msgid "This can be used to reduce memory usage without affecting the source images, or avoid issues with textures not displaying on mobile/web platforms (as these usually can't display textures larger than 4096×4096)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:489 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:486 msgid "Detect 3D > Compress To" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:491 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:488 msgid "This changes the :ref:`doc_importing_images_compress_mode` option that is used when a texture is detected as being used in 3D." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:494 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:491 msgid "Changing this import option only has an effect if a texture is detected as being used in 3D. Changing this to **Disabled** then reimporting will not change the existing compress mode on a texture (if it's detected to be used in 3D), but choosing **VRAM Compressed** or **Basis Universal** will." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:500 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:497 msgid "SVG > Scale" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:502 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:514 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:523 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:499 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:511 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:520 msgid "*This is only available for SVG images.*" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:504 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:501 msgid "The scale the SVG should be rendered at, with ``1.0`` being the original design size. Higher values result in a larger image. Note that unlike font oversampling, this affects the physical size the SVG is rendered at in 2D. See also **Editor > Scale With Editor Scale** below." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:512 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:509 msgid "Editor > Scale With Editor Scale" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:516 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:513 msgid "If true, scales the imported image to match the editor's display scale factor. This should be enabled for editor plugin icons and custom class icons, but should be left disabled otherwise." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:521 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:518 msgid "Editor > Convert Colors With Editor Theme" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:525 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:522 msgid "If checked, converts the imported image's colors to match the editor's icon and font color palette. This assumes the image uses the exact same colors as :ref:`Godot's own color palette for editor icons `, with the source file designed for a dark editor theme. This should be enabled for editor plugin icons and custom class icons, but should be left disabled otherwise." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:534 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:531 msgid "Importing SVG images with text" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:536 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:533 msgid "As the SVG library used in Godot doesn't support rasterizing text found in SVG images, text must be converted to a path first. Otherwise, text won't appear in the rasterized image." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:540 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:537 msgid "There are two ways to achieve this in a non-destructive manner, so you can keep editing the original text afterwards:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:543 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:540 msgid "Select your text object in Inkscape, then duplicate it in place by pressing :kbd:`Ctrl + D` and use **Path > Object to Path**. Hide the original text object afterwards using the **Layers and Objects** dock." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:546 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:543 msgid "Use the Inkscape command line to export an SVG from another SVG file with text converted to paths:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:554 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:551 msgid "Best practices" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:557 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:554 msgid "Supporting high-resolution texture sizes in 2D without artifacts" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:559 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:556 msgid "To support :ref:`multiple resolutions ` with crisp visuals at high resolutions, you will need to use high-resolution source images (suited for the highest resolution you wish to support without blurriness, which is typically 4K in modern desktop games)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:564 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:561 msgid "There are 2 ways to proceed:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:566 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:563 msgid "Use a high base resolution in the project settings (such as 4K), then use the textures at original scale. This is an easier approach." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:568 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:565 msgid "Use a low base resolution in the project settings (such as 1080p), then downscale textures when using them. This is often more difficult and can make various calculations in script tedious, so the approach described above is recommended instead." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:573 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:570 msgid "After doing this, you may notice that textures become grainy at lower viewport resolutions. To resolve this, enable **Mipmaps** on textures used in 2D in the Import dock. This will increase memory usage." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:577 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:574 msgid "Enabling mipmaps can also make textures appear blurrier, but you can choose to make textures sharper (at the cost of some graininess) by setting **Rendering > Textures > Default Filters > Texture Mipmap Bias** to a negative value." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:583 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:580 msgid "Use appropriate texture sizes in 3D" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:585 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:582 msgid "While there's no \"one size fits all\" recommendation, here are some general recommendations for choosing texture sizes in 3D:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:588 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:585 msgid "The size of a texture should be adjusted to have a consistent texel density compared to surrounding objects. While this cannot be ensured perfectly when sticking to power-of-two texture sizes, it's usually possible to keep texture detail fairly consistent throughout a 3D scene." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:592 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:589 msgid "The smaller the object appears on screen, the smaller its texture should be. For example, a tree that only appears in the background doesn't need a texture resolution as high as other objects the player may be able to walk close to." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:595 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:592 msgid "Using power-of-two texture sizes is recommended, but is not required. Textures don't have to be square – sizes such as 1024×512 are acceptable." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:597 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:594 msgid "There are diminishing returns to using large texture sizes, despite the increased memory usage and loading times. Most modern 3D games not using a pixel art style stick to 2048×2048 textures on average, with 1024×1024 and 512×512 for textures spanning smaller surfaces." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:601 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:598 msgid "When working with physically-based materials in 3D, you can reduce memory usage and file size without affecting quality too much by using a lower resolution for certain texture maps. This works especially well for textures that only feature low-frequency detail (such as a normal map for a snow texture)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:607 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:604 msgid "If you have control over how the 3D models are created, these tips are also worth exploring:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:610 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:607 msgid "When working with 3D models that are mostly symmetrical, you may be able to use mirrored UVs to double the effective texel density. This may look unnatural when used on human faces though." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:613 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:610 msgid "When working with 3D models using a low-poly style and plain colors, you can rely on vertex colors instead of textures to represent colors on the model's surfaces." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:619 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:616 msgid "Images can be loaded and saved at runtime using :ref:`runtime file loading and saving `, including from an exported project." msgstr "" diff --git a/sphinx/templates/tutorials/assets_pipeline/importing_translations.pot b/sphinx/templates/tutorials/assets_pipeline/importing_translations.pot index 656ef9493b..f5f43a0713 100644 --- a/sphinx/templates/tutorials/assets_pipeline/importing_translations.pot +++ b/sphinx/templates/tutorials/assets_pipeline/importing_translations.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/assets_pipeline/index.pot b/sphinx/templates/tutorials/assets_pipeline/index.pot index b5a80bea4a..2617686bac 100644 --- a/sphinx/templates/tutorials/assets_pipeline/index.pot +++ b/sphinx/templates/tutorials/assets_pipeline/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/assets_pipeline/retargeting_3d_skeletons.pot b/sphinx/templates/tutorials/assets_pipeline/retargeting_3d_skeletons.pot index 71c5ce5443..848f15c9c8 100644 --- a/sphinx/templates/tutorials/assets_pipeline/retargeting_3d_skeletons.pot +++ b/sphinx/templates/tutorials/assets_pipeline/retargeting_3d_skeletons.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -36,185 +36,185 @@ msgid "The Skeleton stores the Transform values necessary for the default pose a msgstr "" #: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:21 -msgid "Godot 3.x and Godot 4.0+ have different Bone Pose behaviors. In Godot 3.x, Bone Pose is relative to Bone Rest, but in Godot 4.0+, it includes Bone Rest. See this `article `__." +msgid "Godot 3 and Godot 4 have different Bone Pose behaviors. In Godot 3, Bone Pose is relative to Bone Rest, but in Godot 4, it includes Bone Rest. See this `article `__ for more information." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:25 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:27 msgid "Skeletal models have different Bone Rests depending on the environment from which they were exported. For example, the bones of a glTF model output from Blender have \"Edit Bone Orientation\" as the Bone Rest rotation. However, there are skeletal models without any Bone Rest rotations, such as the glTF model output from Maya." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:30 -msgid "To share animations in Godot, it is necessary to match Bone Rests as well as Bone Names to remove unwanted tracks in some cases. In Godot 4.0+, you can do that using the scene importer." +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:32 +msgid "To share animations in Godot, it is necessary to match Bone Rests as well as Bone Names to remove unwanted tracks in some cases. You can do that using the scene importer." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:35 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:36 msgid "Options for Retargeting" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:38 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:39 msgid "Bone Map" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:40 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:41 msgid "When you select the Skeleton3D node in the advanced scene import menu, a menu will appear on the right-hand side containing the \"Retarget\" section. The Retarget section has a single property ``bone_map``." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:46 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:47 msgid "With the Skeleton node selected, first set up a new :ref:`class_bonemap` and :ref:`class_skeletonprofile`. Godot has a preset called :ref:`class_skeletonprofilehumanoid` for humanoid models. This tutorial proceeds with the assumption that you are using :ref:`class_skeletonprofilehumanoid`." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:50 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:51 msgid "If you need a profile that is different from :ref:`class_skeletonprofilehumanoid`, you can export a :ref:`class_skeletonprofile` from the editor by selecting a Skeleton3D and using the **Skeleton3D** menu in the 3D viewport's toolbar." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:53 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:54 msgid "When you use :ref:`class_skeletonprofilehumanoid`, auto-mapping will be performed when the :ref:`class_skeletonprofile` is set. If the auto-mapping does not work well, you can map bones manually." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:58 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:59 msgid "Any missing, duplicate or incorrect parent-child relationship mappings will be indicated by a magenta / red button (depending on the editor setting). It does not block the import process, but it warns that animations may not be shared correctly." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:62 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:63 msgid "The auto-mapping uses pattern matching for the bone names. So we recommend to use common English names for bones." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:65 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:66 msgid "After you set up the ``bone_map``, several options are available in the sections below." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:70 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:71 msgid "Remove Tracks" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:72 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:73 msgid "If you import resources as an :ref:`class_animationlibrary` that will be shared, we recommend to enable these options. However, if you import resources as scenes, these should be disabled in some cases. For example, if you import a character with animated accessories, these options may cause the accessories to not animate." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:78 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:79 msgid "Except Bone Transform" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:80 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:81 msgid "Removes any tracks except the bone Transform track from the animations." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:83 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:84 msgid "Unimportant Positions" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:85 -msgid "Removes Position tracks other than ``root_bone`` and ``scale_base_bone`` defined in :ref:`class_skeletonprofile` from the animations. In :ref:`class_skeletonprofilehumanoid`, this means that to remove Position tracks other than \"Root\" and \"Hips\". Since Godot 4.0+, animations include Bone Rest in the Transform value. If you disable this option, the animation may change the body shape unpredictably." +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:86 +msgid "Removes Position tracks other than ``root_bone`` and ``scale_base_bone`` defined in :ref:`class_skeletonprofile` from the animations. In :ref:`class_skeletonprofilehumanoid`, this means that to remove Position tracks other than \"Root\" and \"Hips\". Since Godot 4, animations include Bone Rest in the Transform value. If you disable this option, the animation may change the body shape unpredictably." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:92 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:93 msgid "Unmapped Bones" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:94 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:95 msgid "Removes unmapped bone Transform tracks from the animations." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:97 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:98 msgid "Bone Renamer" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:100 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:101 msgid "Rename Bones" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:102 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:103 msgid "Rename the mapped bones." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:105 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:106 msgid "Unique Node" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:107 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:108 msgid "Makes Skeleton a unique node with the name specified in the ``skeleton_name``. This allows the animation track paths to be unified independent of the scene hierarchy." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:111 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:112 msgid "Rest Fixer" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:113 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:114 msgid "Reference poses defined in :ref:`class_skeletonprofilehumanoid` have the following rules:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:115 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:116 msgid "The humanoid is T-pose" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:116 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:117 msgid "The humanoid is facing +Z in the Right-Handed Y-UP Coordinate System" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:117 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:118 msgid "The humanoid should not have a Transform as Node" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:118 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:119 msgid "Directs the +Y axis from the parent joint to the child joint" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:119 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:120 msgid "+X rotation bends the joint like a muscle contracting" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:121 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:122 msgid "These rules are convenient definitions for blend animation and Inverse Kinematics (IK). If your model does not match this definition, you need to fix it with these options." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:125 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:126 msgid "Apply Node Transform" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:127 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:128 msgid "If the asset is not exported correctly for sharing, the imported Skeleton may have a Transform as a Node. For example, a glTF exported from Blender with no \"Apply Transform\" executed is one such case. It looks like the model matches the definition, but the internal Transforms are different from the definition. This option fixes such models by applying Transforms on import." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:133 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:134 msgid "If the imported scene contains objects other than Skeletons, this option may have a negative effect." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:136 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:137 msgid "Normalize Position Tracks" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:138 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:139 msgid "Position track is used mostly for model movement, but sharing the moving animation between models with different heights may cause the appearance of slipping due to the difference in stride length. This option normalizes the Position track values based on the ``scale_base_bone`` height. The ``scale_base_bone`` height is stored in the Skeleton as the ``motion_scale``, and the normalized Position track values is multiplied by that value on playback. If this option is disabled, the Position tracks is not normalized and the Skeleton's ``motion_scale`` is always imported as ``1.0``." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:146 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:147 msgid "With :ref:`class_skeletonprofilehumanoid`, ``scale_base_bone`` is \"Hips\", therefore the Hips' height is used as the ``motion_scale``." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:149 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:150 msgid "Overwrite Axis" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:151 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:152 msgid "Unifies the models' Bone Rests by overwriting it to match the reference poses defined in the :ref:`class_skeletonprofile`." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:153 -msgid "This is the most important option for sharing animations in Godot 4.0+, but be aware that this option can produce horrible results **if the original Bone Rest set externally is important**. If you want to share animations with keeping the original Bone Rest, consider to use the `Realtime Retarget Module `__." +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:154 +msgid "This is the most important option for sharing animations in Godot 4, but be aware that this option can produce horrible results **if the original Bone Rest set externally is important**. If you want to share animations with keeping the original Bone Rest, consider to use the `Realtime Retarget Module `__." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:159 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:160 msgid "Fix Silhouette" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:161 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:162 msgid "Attempts to make the model's silhouette match that of the reference poses defined in the :ref:`class_skeletonprofile`, such as T-Pose. This cannot fix silhouettes which are too different, and it may not work for fixing bone roll." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:164 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:165 msgid "With :ref:`class_skeletonprofilehumanoid`, this option does not need to be enabled for T-pose models, but should be enabled for A-pose models. However in that case, the fixed foot results may be bad depending on the heel height of the model, so it may be necessary to add the :ref:`class_skeletonprofile` bone names you do not want fixed in the ``filter`` array, as in the below example." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:171 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:172 msgid "Also, for models with bent knees or feet, it may be necessary to adjust the ``scale_base_bone`` height. For that, you can use ``base_height_adjustment`` option." msgstr "" diff --git a/sphinx/templates/tutorials/audio/audio_buses.pot b/sphinx/templates/tutorials/audio/audio_buses.pot index 80eb2a809f..3f17c80d94 100644 --- a/sphinx/templates/tutorials/audio/audio_buses.pot +++ b/sphinx/templates/tutorials/audio/audio_buses.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/audio/audio_effects.pot b/sphinx/templates/tutorials/audio/audio_effects.pot index f52c8b312f..bd568722be 100644 --- a/sphinx/templates/tutorials/audio/audio_effects.pot +++ b/sphinx/templates/tutorials/audio/audio_effects.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/audio/audio_streams.pot b/sphinx/templates/tutorials/audio/audio_streams.pot index 954f468e63..7b0ff0770f 100644 --- a/sphinx/templates/tutorials/audio/audio_streams.pot +++ b/sphinx/templates/tutorials/audio/audio_streams.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/audio/index.pot b/sphinx/templates/tutorials/audio/index.pot index 4aa1a70b51..ba28fa3563 100644 --- a/sphinx/templates/tutorials/audio/index.pot +++ b/sphinx/templates/tutorials/audio/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/audio/recording_with_microphone.pot b/sphinx/templates/tutorials/audio/recording_with_microphone.pot index 5f5d001af7..9288c03c5c 100644 --- a/sphinx/templates/tutorials/audio/recording_with_microphone.pot +++ b/sphinx/templates/tutorials/audio/recording_with_microphone.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -31,34 +31,38 @@ msgstr "" msgid "You will need to enable audio input in the :ref:`Audio > Driver > Enable Input` project setting, or you'll just get empty audio files." msgstr "" -#: ../../docs/tutorials/audio/recording_with_microphone.rst:18 -msgid "The structure of the demo" +#: ../../docs/tutorials/audio/recording_with_microphone.rst:17 +msgid "On iOS and iPadOS, it is also important to set the advanced **Audio > General > iOS > Session Category** setting to include **Record** or **Play and Record**." msgstr "" #: ../../docs/tutorials/audio/recording_with_microphone.rst:20 +msgid "The structure of the demo" +msgstr "" + +#: ../../docs/tutorials/audio/recording_with_microphone.rst:22 msgid "The demo consists of a single scene. This scene includes two major parts: the GUI and the audio." msgstr "" -#: ../../docs/tutorials/audio/recording_with_microphone.rst:23 +#: ../../docs/tutorials/audio/recording_with_microphone.rst:25 msgid "We will focus on the audio part. In this demo, a bus named ``Record`` with the effect ``Record`` is created to handle the audio recording. An ``AudioStreamPlayer`` named ``AudioStreamRecord`` is used for recording." msgstr "" -#: ../../docs/tutorials/audio/recording_with_microphone.rst:59 +#: ../../docs/tutorials/audio/recording_with_microphone.rst:61 msgid "The audio recording is handled by the :ref:`class_AudioEffectRecord` resource which has three methods: :ref:`get_recording() `, :ref:`is_recording_active() `, and :ref:`set_recording_active() `." msgstr "" -#: ../../docs/tutorials/audio/recording_with_microphone.rst:106 +#: ../../docs/tutorials/audio/recording_with_microphone.rst:108 msgid "At the start of the demo, the recording effect is not active. When the user presses the ``RecordButton``, the effect is enabled with ``set_recording_active(true)``." msgstr "" -#: ../../docs/tutorials/audio/recording_with_microphone.rst:110 +#: ../../docs/tutorials/audio/recording_with_microphone.rst:112 msgid "On the next button press, as ``effect.is_recording_active()`` is ``true``, the recorded stream can be stored into the ``recording`` variable by calling ``effect.get_recording()``." msgstr "" -#: ../../docs/tutorials/audio/recording_with_microphone.rst:142 +#: ../../docs/tutorials/audio/recording_with_microphone.rst:144 msgid "To playback the recording, you assign the recording as the stream of the ``AudioStreamPlayer`` and call ``play()``." msgstr "" -#: ../../docs/tutorials/audio/recording_with_microphone.rst:162 +#: ../../docs/tutorials/audio/recording_with_microphone.rst:164 msgid "To save the recording, you call ``save_to_wav()`` with the path to a file. In this demo, the path is defined by the user via a ``LineEdit`` input box." msgstr "" diff --git a/sphinx/templates/tutorials/audio/sync_with_audio.pot b/sphinx/templates/tutorials/audio/sync_with_audio.pot index 4dda03c847..d3d9ee8208 100644 --- a/sphinx/templates/tutorials/audio/sync_with_audio.pot +++ b/sphinx/templates/tutorials/audio/sync_with_audio.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/audio/text_to_speech.pot b/sphinx/templates/tutorials/audio/text_to_speech.pot index a81815fc1e..53b79f86bb 100644 --- a/sphinx/templates/tutorials/audio/text_to_speech.pot +++ b/sphinx/templates/tutorials/audio/text_to_speech.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/best_practices/autoloads_versus_internal_nodes.pot b/sphinx/templates/tutorials/best_practices/autoloads_versus_internal_nodes.pot index 72cb9dc0cd..c2a0ea7a18 100644 --- a/sphinx/templates/tutorials/best_practices/autoloads_versus_internal_nodes.pot +++ b/sphinx/templates/tutorials/best_practices/autoloads_versus_internal_nodes.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/best_practices/data_preferences.pot b/sphinx/templates/tutorials/best_practices/data_preferences.pot index 56e9a0e0b5..2277034145 100644 --- a/sphinx/templates/tutorials/best_practices/data_preferences.pot +++ b/sphinx/templates/tutorials/best_practices/data_preferences.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/best_practices/godot_interfaces.pot b/sphinx/templates/tutorials/best_practices/godot_interfaces.pot index 20e82f1495..3e417b58d7 100644 --- a/sphinx/templates/tutorials/best_practices/godot_interfaces.pot +++ b/sphinx/templates/tutorials/best_practices/godot_interfaces.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/best_practices/godot_notifications.pot b/sphinx/templates/tutorials/best_practices/godot_notifications.pot index f0c19bb1ed..dca585368e 100644 --- a/sphinx/templates/tutorials/best_practices/godot_notifications.pot +++ b/sphinx/templates/tutorials/best_practices/godot_notifications.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/best_practices/index.pot b/sphinx/templates/tutorials/best_practices/index.pot index f0a6d079b4..00bb62431c 100644 --- a/sphinx/templates/tutorials/best_practices/index.pot +++ b/sphinx/templates/tutorials/best_practices/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/best_practices/introduction_best_practices.pot b/sphinx/templates/tutorials/best_practices/introduction_best_practices.pot index 30260e78db..d2cba6ed66 100644 --- a/sphinx/templates/tutorials/best_practices/introduction_best_practices.pot +++ b/sphinx/templates/tutorials/best_practices/introduction_best_practices.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/best_practices/logic_preferences.pot b/sphinx/templates/tutorials/best_practices/logic_preferences.pot index 58eb8b6649..f15b1972ca 100644 --- a/sphinx/templates/tutorials/best_practices/logic_preferences.pot +++ b/sphinx/templates/tutorials/best_practices/logic_preferences.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -56,69 +56,69 @@ msgid "So, when exactly does preloading occur versus loading, and when should on msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:122 -msgid "Preloading allows the script to handle all the loading the moment one loads the script. Preloading is useful, but there are also times when one doesn't wish for it. To distinguish these situations, there are a few things one can consider:" +msgid "Preloading allows the script to handle all the loading the moment one loads the script. Preloading is useful, but there are also times when one doesn't wish to use it. Here are a few considerations when determining which to use:" msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:127 -msgid "If one cannot determine when the script might load, then preloading a resource, especially a scene or script, could result in further loads one does not expect. This could lead to unintentional, variable-length load times on top of the original script's load operations." +#: ../../docs/tutorials/best_practices/logic_preferences.rst:126 +msgid "If one cannot determine when the script might load, then preloading a resource (especially a scene or script) could result in additional loads one does not expect. This could lead to unintentional, variable-length load times on top of the original script's load operations." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:132 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:131 msgid "If something else could replace the value (like a scene's exported initialization), then preloading the value has no meaning. This point isn't a significant factor if one intends to always create the script on its own." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:136 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:135 msgid "If one wishes only to 'import' another class resource (script or scene), then using a preloaded constant is often the best course of action. However, in exceptional cases, one may wish not to do this:" msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:140 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:139 msgid "If the 'imported' class is liable to change, then it should be a property instead, initialized either using an ``@export`` or a ``load()`` (and perhaps not even initialized until later)." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:144 -msgid "If the script requires a great many dependencies, and one does not wish to consume so much memory, then one may wish to, load and unload various dependencies at runtime as circumstances change. If one preloads resources into constants, then the only way to unload these resources would be to unload the entire script. If they are instead loaded properties, then one can set them to ``null`` and remove all references to the resource entirely (which, as a :ref:`RefCounted `-extending type, will cause the resources to delete themselves from memory)." +#: ../../docs/tutorials/best_practices/logic_preferences.rst:143 +msgid "If the script requires a great many dependencies, and one does not wish to consume so much memory, then one may wish to load and unload various dependencies at runtime as circumstances change. If one preloads resources into constants, then the only way to unload these resources would be to unload the entire script. If they are instead loaded as properties, then one can set these properties to ``null`` and remove all references to the resource (which, as a :ref:`RefCounted `-extending type, will cause the resources to delete themselves from memory)." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:155 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:154 msgid "Large levels: static vs. dynamic" msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:157 -msgid "If one is creating a large level, which circumstances are most appropriate? Should they create the level as one static space? Or should they load the level in pieces and shift the world's content as needed?" +#: ../../docs/tutorials/best_practices/logic_preferences.rst:156 +msgid "If one is creating a large level, which circumstances are most appropriate? Is it better to create the level as one static space? Or is it better to load the level in pieces and shift the world's content as needed?" msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:161 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:160 msgid "Well, the simple answer is, \"when the performance requires it.\" The dilemma associated with the two options is one of the age-old programming choices: does one optimize memory over speed, or vice versa?" msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:165 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:164 msgid "The naive answer is to use a static level that loads everything at once. But, depending on the project, this could consume a large amount of memory. Wasting users' RAM leads to programs running slow or outright crashing from everything else the computer tries to do at the same time." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:170 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:169 msgid "No matter what, one should break larger scenes into smaller ones (to aid in reusability of assets). Developers can then design a node that manages the creation/loading and deletion/unloading of resources and nodes in real-time. Games with large and varied environments or procedurally generated elements often implement these strategies to avoid wasting memory." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:176 -msgid "On the flip side, coding a dynamic system is more complex, i.e. uses more programmed logic, which results in opportunities for errors and bugs. If one isn't careful, they can develop a system that bloats the technical debt of the application." +#: ../../docs/tutorials/best_practices/logic_preferences.rst:175 +msgid "On the flip side, coding a dynamic system is more complex; it uses more programmed logic which results in opportunities for errors and bugs. If one isn't careful, they can develop a system that bloats the technical debt of the application." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:181 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:180 msgid "As such, the best options would be..." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:183 -msgid "To use a static level for smaller games." +#: ../../docs/tutorials/best_practices/logic_preferences.rst:182 +msgid "Use static levels for smaller games." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:185 -msgid "If one has the time/resources on a medium/large game, create a library or plugin that can code the management of nodes and resources. If refined over time, so as to improve usability and stability, then it could evolve into a reliable tool across projects." +#: ../../docs/tutorials/best_practices/logic_preferences.rst:184 +msgid "If one has the time/resources on a medium/large game, create a library or plugin that can manage nodes and resources with code. If refined over time so as to improve usability and stability, then it could evolve into a reliable tool across projects." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:190 -msgid "Code the dynamic logic for a medium/large game because one has the coding skills, but not the time or resources to refine the code (game's gotta get done). Could potentially refactor later to outsource the code into a plugin." +#: ../../docs/tutorials/best_practices/logic_preferences.rst:189 +msgid "Use dynamic logic for a medium/large game because one has the coding skills, but not the time or resources to refine the code (game's gotta get done). Could potentially refactor later to outsource the code into a plugin." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:195 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:194 msgid "For an example of the various ways one can swap scenes around at runtime, please see the :ref:`\"Change scenes manually\" ` documentation." msgstr "" diff --git a/sphinx/templates/tutorials/best_practices/node_alternatives.pot b/sphinx/templates/tutorials/best_practices/node_alternatives.pot index 0080d92525..3ea9b16a0a 100644 --- a/sphinx/templates/tutorials/best_practices/node_alternatives.pot +++ b/sphinx/templates/tutorials/best_practices/node_alternatives.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/best_practices/project_organization.pot b/sphinx/templates/tutorials/best_practices/project_organization.pot index 0eb20f0d27..349b5c8d82 100644 --- a/sphinx/templates/tutorials/best_practices/project_organization.pot +++ b/sphinx/templates/tutorials/best_practices/project_organization.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/best_practices/scene_organization.pot b/sphinx/templates/tutorials/best_practices/scene_organization.pot index 08b8e1bba0..4ba0a4842d 100644 --- a/sphinx/templates/tutorials/best_practices/scene_organization.pot +++ b/sphinx/templates/tutorials/best_practices/scene_organization.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/best_practices/scenes_versus_scripts.pot b/sphinx/templates/tutorials/best_practices/scenes_versus_scripts.pot index 80ab1db2c5..58511c3a0a 100644 --- a/sphinx/templates/tutorials/best_practices/scenes_versus_scripts.pot +++ b/sphinx/templates/tutorials/best_practices/scenes_versus_scripts.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/best_practices/version_control_systems.pot b/sphinx/templates/tutorials/best_practices/version_control_systems.pot index 5e3e12d0fc..1b696d9118 100644 --- a/sphinx/templates/tutorials/best_practices/version_control_systems.pot +++ b/sphinx/templates/tutorials/best_practices/version_control_systems.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -36,7 +36,7 @@ msgid "Godot also supports the use of version control systems in the editor itse msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:18 -msgid "As of July 2023, there is only a Git plugin available, but the community may create additional VCS plugins." +msgid "As of October 2025, there is only a Git plugin available, but the community may create additional VCS plugins." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:22 @@ -64,7 +64,7 @@ msgid "The list of files of folders that should be ignored from version control msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:44 -msgid "If you are using Godot 3, check the ``3.5`` version of this documentation page instead." +msgid "If you are using Godot 3, check the ``3.6`` version of this documentation page instead." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:47 diff --git a/sphinx/templates/tutorials/best_practices/what_are_godot_classes.pot b/sphinx/templates/tutorials/best_practices/what_are_godot_classes.pot index 943a0583c3..c0df472712 100644 --- a/sphinx/templates/tutorials/best_practices/what_are_godot_classes.pot +++ b/sphinx/templates/tutorials/best_practices/what_are_godot_classes.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/editor/command_line_tutorial.pot b/sphinx/templates/tutorials/editor/command_line_tutorial.pot index 433439dee3..2a9c2b68ea 100644 --- a/sphinx/templates/tutorials/editor/command_line_tutorial.pot +++ b/sphinx/templates/tutorials/editor/command_line_tutorial.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -220,7 +220,7 @@ msgid "|release| Path to a project (```` must contain a 'project.godo msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:89 -msgid "``scene ``" +msgid "``--scene ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:89 diff --git a/sphinx/templates/tutorials/editor/customizing_editor.pot b/sphinx/templates/tutorials/editor/customizing_editor.pot index ae7194762b..f6215e0fcf 100644 --- a/sphinx/templates/tutorials/editor/customizing_editor.pot +++ b/sphinx/templates/tutorials/editor/customizing_editor.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/editor/default_key_mapping.pot b/sphinx/templates/tutorials/editor/default_key_mapping.pot index 37bde1ed4c..2c3a021572 100644 --- a/sphinx/templates/tutorials/editor/default_key_mapping.pot +++ b/sphinx/templates/tutorials/editor/default_key_mapping.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -112,7 +112,7 @@ msgid "Editor setting" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:34 -msgid "Open 2D Editor" +msgid "Open 2D Workspace" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:34 @@ -128,7 +128,7 @@ msgid "``editor/editor_2d``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:36 -msgid "Open 3D Editor" +msgid "Open 3D Workspace" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:36 @@ -185,7 +185,8 @@ msgid ":kbd:`Ctrl + Shift + F11`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:42 -msgid ":kbd:`Cmd + Ctrl + D`" +#: ../../docs/tutorials/editor/default_key_mapping.rst:486 +msgid ":kbd:`Cmd + Shift + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:42 @@ -2599,10 +2600,6 @@ msgstr "" msgid "Duplicate Transposed" msgstr "" -#: ../../docs/tutorials/editor/default_key_mapping.rst:486 -msgid ":kbd:`Cmd + Shift + D`" -msgstr "" - #: ../../docs/tutorials/editor/default_key_mapping.rst:486 msgid "``animation_editor/duplicate_selection_transposed``" msgstr "" diff --git a/sphinx/templates/tutorials/editor/external_editor.pot b/sphinx/templates/tutorials/editor/external_editor.pot index b219dbef2c..f06d75da79 100644 --- a/sphinx/templates/tutorials/editor/external_editor.pot +++ b/sphinx/templates/tutorials/editor/external_editor.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -146,7 +146,7 @@ msgid "``emacs +{line}:{col} {file}``" msgstr "" #: ../../docs/tutorials/editor/external_editor.rst:57 -msgid "Sublime Text" +msgid "Sublime Text/Zed" msgstr "" #: ../../docs/tutorials/editor/external_editor.rst:57 @@ -158,7 +158,7 @@ msgid "Visual Studio*" msgstr "" #: ../../docs/tutorials/editor/external_editor.rst:59 -msgid "``/edit \"file\"``" +msgid "``/edit \"{file}\"``" msgstr "" #: ../../docs/tutorials/editor/external_editor.rst:62 diff --git a/sphinx/templates/tutorials/editor/index.pot b/sphinx/templates/tutorials/editor/index.pot index 3e2243bc3b..a653cf5760 100644 --- a/sphinx/templates/tutorials/editor/index.pot +++ b/sphinx/templates/tutorials/editor/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/editor/inspector_dock.pot b/sphinx/templates/tutorials/editor/inspector_dock.pot index 09d4e255f9..d61a3bf92e 100644 --- a/sphinx/templates/tutorials/editor/inspector_dock.pot +++ b/sphinx/templates/tutorials/editor/inspector_dock.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/editor/managing_editor_features.pot b/sphinx/templates/tutorials/editor/managing_editor_features.pot index 09d84a3ed6..8b89df1579 100644 --- a/sphinx/templates/tutorials/editor/managing_editor_features.pot +++ b/sphinx/templates/tutorials/editor/managing_editor_features.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/editor/project_manager.pot b/sphinx/templates/tutorials/editor/project_manager.pot index 340d5cf809..cc72bc6c06 100644 --- a/sphinx/templates/tutorials/editor/project_manager.pot +++ b/sphinx/templates/tutorials/editor/project_manager.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/editor/project_settings.pot b/sphinx/templates/tutorials/editor/project_settings.pot index 2ca27b1f2e..0e02510bf5 100644 --- a/sphinx/templates/tutorials/editor/project_settings.pot +++ b/sphinx/templates/tutorials/editor/project_settings.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/editor/script_editor.pot b/sphinx/templates/tutorials/editor/script_editor.pot index 927deef8cf..83844d840c 100644 --- a/sphinx/templates/tutorials/editor/script_editor.pot +++ b/sphinx/templates/tutorials/editor/script_editor.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/editor/using_engine_compilation_configuration_editor.pot b/sphinx/templates/tutorials/editor/using_engine_compilation_configuration_editor.pot index eb3cf2be84..578d893c88 100644 --- a/sphinx/templates/tutorials/editor/using_engine_compilation_configuration_editor.pot +++ b/sphinx/templates/tutorials/editor/using_engine_compilation_configuration_editor.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/editor/using_the_android_editor.pot b/sphinx/templates/tutorials/editor/using_the_android_editor.pot index d32266372a..d905a809c8 100644 --- a/sphinx/templates/tutorials/editor/using_the_android_editor.pot +++ b/sphinx/templates/tutorials/editor/using_the_android_editor.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -152,7 +152,7 @@ msgid "No support for external script editors." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:75 -msgid "While available, the *Vulkan Forward+* renderer is not recommended due to severe performance issues." +msgid "While available, the Forward+ renderer is not recommended due to severe performance issues." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:76 diff --git a/sphinx/templates/tutorials/editor/using_the_web_editor.pot b/sphinx/templates/tutorials/editor/using_the_web_editor.pot index ab3eefcc71..c6a1d9f29e 100644 --- a/sphinx/templates/tutorials/editor/using_the_web_editor.pot +++ b/sphinx/templates/tutorials/editor/using_the_web_editor.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/editor/using_the_xr_editor.pot b/sphinx/templates/tutorials/editor/using_the_xr_editor.pot index d6a6f0b427..ec3c394255 100644 --- a/sphinx/templates/tutorials/editor/using_the_xr_editor.pot +++ b/sphinx/templates/tutorials/editor/using_the_xr_editor.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/export/android_gradle_build.pot b/sphinx/templates/tutorials/export/android_gradle_build.pot index 4ef8f7a0b5..16bab2338d 100644 --- a/sphinx/templates/tutorials/export/android_gradle_build.pot +++ b/sphinx/templates/tutorials/export/android_gradle_build.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/export/changing_application_icon_for_windows.pot b/sphinx/templates/tutorials/export/changing_application_icon_for_windows.pot index f5e50060b4..3a1804cdaa 100644 --- a/sphinx/templates/tutorials/export/changing_application_icon_for_windows.pot +++ b/sphinx/templates/tutorials/export/changing_application_icon_for_windows.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/export/exporting_for_android.pot b/sphinx/templates/tutorials/export/exporting_for_android.pot index 6a036cb5e4..37d3edee6b 100644 --- a/sphinx/templates/tutorials/export/exporting_for_android.pot +++ b/sphinx/templates/tutorials/export/exporting_for_android.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -68,7 +68,7 @@ msgid "Android SDK Platform-Tools version 35.0.0 or later" msgstr "" #: ../../docs/tutorials/export/exporting_for_android.rst:41 -msgid "Android SDK Build-Tools version 35.0.0" +msgid "Android SDK Build-Tools version 35.0.1" msgstr "" #: ../../docs/tutorials/export/exporting_for_android.rst:42 diff --git a/sphinx/templates/tutorials/export/exporting_for_dedicated_servers.pot b/sphinx/templates/tutorials/export/exporting_for_dedicated_servers.pot index 180df3bf0b..ce6822b626 100644 --- a/sphinx/templates/tutorials/export/exporting_for_dedicated_servers.pot +++ b/sphinx/templates/tutorials/export/exporting_for_dedicated_servers.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/export/exporting_for_ios.pot b/sphinx/templates/tutorials/export/exporting_for_ios.pot index bddbccf9f9..cbc011ac89 100644 --- a/sphinx/templates/tutorials/export/exporting_for_ios.pot +++ b/sphinx/templates/tutorials/export/exporting_for_ios.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/export/exporting_for_linux.pot b/sphinx/templates/tutorials/export/exporting_for_linux.pot index ec5c2177f3..649d86f8ce 100644 --- a/sphinx/templates/tutorials/export/exporting_for_linux.pot +++ b/sphinx/templates/tutorials/export/exporting_for_linux.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/export/exporting_for_macos.pot b/sphinx/templates/tutorials/export/exporting_for_macos.pot index 4c789e47ad..1f3216e1d8 100644 --- a/sphinx/templates/tutorials/export/exporting_for_macos.pot +++ b/sphinx/templates/tutorials/export/exporting_for_macos.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/export/exporting_for_visionos.pot b/sphinx/templates/tutorials/export/exporting_for_visionos.pot index 05fc93e89c..4f896531e8 100644 --- a/sphinx/templates/tutorials/export/exporting_for_visionos.pot +++ b/sphinx/templates/tutorials/export/exporting_for_visionos.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/export/exporting_for_web.pot b/sphinx/templates/tutorials/export/exporting_for_web.pot index 5d0ddd7e8b..4e000dede2 100644 --- a/sphinx/templates/tutorials/export/exporting_for_web.pot +++ b/sphinx/templates/tutorials/export/exporting_for_web.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -80,7 +80,7 @@ msgid "WebGL version" msgstr "" #: ../../docs/tutorials/export/exporting_for_web.rst:76 -msgid "Godot 4.0 and later can only target WebGL 2.0 (using the Compatibility rendering method). Forward+/Mobile are not supported on the web platform, as these rendering methods are designed around modern low-level graphics APIs. Godot currently does not support WebGPU, which is a prerequisite for allowing Forward+/Mobile to run on the web platform." +msgid "Godot 4 can only target WebGL 2.0 (using the Compatibility rendering method). Forward+/Mobile are not supported on the web platform, as these rendering methods are designed around modern low-level graphics APIs. Godot currently does not support WebGPU, which is a prerequisite for allowing Forward+/Mobile to run on the web platform." msgstr "" #: ../../docs/tutorials/export/exporting_for_web.rst:82 diff --git a/sphinx/templates/tutorials/export/exporting_for_windows.pot b/sphinx/templates/tutorials/export/exporting_for_windows.pot index da2e97f72b..0d1fda0731 100644 --- a/sphinx/templates/tutorials/export/exporting_for_windows.pot +++ b/sphinx/templates/tutorials/export/exporting_for_windows.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/export/exporting_pcks.pot b/sphinx/templates/tutorials/export/exporting_pcks.pot index 91bb6c5b43..7eb9703fd8 100644 --- a/sphinx/templates/tutorials/export/exporting_pcks.pot +++ b/sphinx/templates/tutorials/export/exporting_pcks.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/export/exporting_projects.pot b/sphinx/templates/tutorials/export/exporting_projects.pot index 18652d5fe3..77b4f50ddd 100644 --- a/sphinx/templates/tutorials/export/exporting_projects.pot +++ b/sphinx/templates/tutorials/export/exporting_projects.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/export/feature_tags.pot b/sphinx/templates/tutorials/export/feature_tags.pot index 0e12208cbe..82037de7ef 100644 --- a/sphinx/templates/tutorials/export/feature_tags.pot +++ b/sphinx/templates/tutorials/export/feature_tags.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/export/index.pot b/sphinx/templates/tutorials/export/index.pot index 00dd3482d8..699cc277e3 100644 --- a/sphinx/templates/tutorials/export/index.pot +++ b/sphinx/templates/tutorials/export/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/export/one-click_deploy.pot b/sphinx/templates/tutorials/export/one-click_deploy.pot index 0d157d9474..046237190a 100644 --- a/sphinx/templates/tutorials/export/one-click_deploy.pot +++ b/sphinx/templates/tutorials/export/one-click_deploy.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/export/running_on_macos.pot b/sphinx/templates/tutorials/export/running_on_macos.pot index 44fb3680e6..326e2954c9 100644 --- a/sphinx/templates/tutorials/export/running_on_macos.pot +++ b/sphinx/templates/tutorials/export/running_on_macos.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/i18n/index.pot b/sphinx/templates/tutorials/i18n/index.pot index eca096d968..b7fe5dc3bd 100644 --- a/sphinx/templates/tutorials/i18n/index.pot +++ b/sphinx/templates/tutorials/i18n/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/i18n/internationalizing_games.pot b/sphinx/templates/tutorials/i18n/internationalizing_games.pot index 8c19d4e406..6fed07ce4c 100644 --- a/sphinx/templates/tutorials/i18n/internationalizing_games.pot +++ b/sphinx/templates/tutorials/i18n/internationalizing_games.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -27,350 +27,362 @@ msgstr "" msgid "While indie or niche games usually do not need localization, games targeting a more massive market often require localization. Godot offers many tools to make this process more straightforward, so this tutorial is more like a collection of tips and tricks." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:15 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:14 msgid "Localization is usually done by specific studios hired for the job. Despite the huge amount of software and file formats available for this, the most common way to do localization to this day is still with spreadsheets. The process of creating the spreadsheets and importing them is already covered in the :ref:`doc_importing_translations` tutorial. If you haven't read the Importing translations page before, we recommend you give it a read before reading this page." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:23 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:22 msgid "We will be using the official demo as an example; you can `download it from the Asset Library `_." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:27 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:28 msgid "Configuring the imported translation" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:29 -msgid "Translations can get updated and re-imported when they change, but they still have to be added to the project. This is done in **Project → Project Settings → Localization**:" +#: ../../docs/tutorials/i18n/internationalizing_games.rst:30 +msgid "Translations can get updated and re-imported when they change, but they still have to be added to the project. This is done in :menu:`Project > Project Settings > Localization > Translations`:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:35 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:36 msgid "The above dialog is used to add or remove translations project-wide." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:38 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:39 msgid "Localizing resources" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:40 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:41 msgid "It is also possible to instruct Godot to use alternate versions of assets (resources) depending on the current language. This can be used for localized images such as in-game billboards or localized voices." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:44 -msgid "The **Remaps** tab can be used for this:" +#: ../../docs/tutorials/i18n/internationalizing_games.rst:45 +msgid "The :ui:`Remaps` tab can be used for this:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:48 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:49 msgid "Select the resource to be remapped then add some alternatives for each locale." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:52 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:53 msgid "The resource remapping system isn't supported for DynamicFonts. To use different fonts depending on the language's script, use the DynamicFont fallback system instead, which lets you define as many fallback fonts as you want." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:57 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:58 msgid "The upside of the DynamicFont fallback system is that it works regardless of the current language, making it ideal for things like multiplayer chat where the text language may not match the client's language." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:62 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:63 msgid "Automatically setting a language" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:63 -msgid "It is recommended to default to the user's preferred language which can be obtained via :ref:`OS.get_locale_language() `. If your game is not available in that language, it will fall back to the :ref:`Fallback ` in **Project Settings > Internationalization > Locale**, or to ``en`` if empty. Nevertheless letting players change the language in game is recommended for various reasons (e.g. translation quality or player preference)." -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:80 -msgid "Locale vs. language" -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:81 -msgid "A :ref:`locale ` is commonly a combination of a language with a region or country, but can also contain information like a script or a variant." -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:83 -msgid "Examples:" +#: ../../docs/tutorials/i18n/internationalizing_games.rst:65 +msgid "It is recommended to default to the user's preferred language which can be obtained via :ref:`OS.get_locale_language() `. If your game is not available in that language, it will fall back to the :ref:`Fallback ` in :menu:`Project > Project Settings > General > Internationalization > Locale`, or to ``en`` if empty. Nevertheless, letting players change the language in game is recommended for various reasons (e.g. translation quality or player preference)." msgstr "" #: ../../docs/tutorials/i18n/internationalizing_games.rst:85 -msgid "``en``: English language" -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:86 -msgid "``en_GB``: English in Great Britain / British English" +msgid "Locale vs. language" msgstr "" #: ../../docs/tutorials/i18n/internationalizing_games.rst:87 -msgid "``en_US``: English in the USA / American English" -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:88 -msgid "``en_DE``: English in Germany" +msgid "A :ref:`locale ` is commonly a combination of a language with a region or country, but can also contain information like a script or a variant." msgstr "" #: ../../docs/tutorials/i18n/internationalizing_games.rst:90 -msgid "Indie games generally only need to care about language, but read on for more information." +msgid "Examples:" msgstr "" #: ../../docs/tutorials/i18n/internationalizing_games.rst:92 -msgid "Why locales exist can be illustrated through the USA and Great Britain. Both speak the same language (English), yet differ in many aspects: - Spelling: E.g. gray (USA), grey (GB) - Use of words: E.g. eggplant (USA), aubergine (GB) - Units or currencies: E.g. feet/inches (USA), metres/cm (GB)" +msgid "``en``: English language" +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:93 +msgid "``en_GB``: English in Great Britain / British English" +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:94 +msgid "``en_US``: English in the USA / American English" +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:95 +msgid "``en_DE``: English in Germany" msgstr "" #: ../../docs/tutorials/i18n/internationalizing_games.rst:97 -msgid "It can get more complex however. Imagine you offer different content in Europe and in China (e.g. in an MMO). You will need to translate each of those content variations into many languages and store and load them accordingly." +msgid "Indie games generally only need to care about language, but read on for more information." msgstr "" #: ../../docs/tutorials/i18n/internationalizing_games.rst:100 -msgid "Converting keys to text" +msgid "Why locales exist can be illustrated through the USA and Great Britain. Both speak the same language (English), yet differ in many aspects:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:102 -msgid "Some controls, such as :ref:`Button ` and :ref:`Label `, will automatically fetch a translation if their text matches a translation key. For example, if a label's text is \"MAIN_SCREEN_GREETING1\" and that key exists in the current translation, then the text will automatically be translated." +#: ../../docs/tutorials/i18n/internationalizing_games.rst:103 +msgid "Spelling: e.g. gray (USA), grey (GB)" +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:104 +msgid "Use of words: e.g. eggplant (USA), aubergine (GB)" +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:105 +msgid "Units or currencies: e.g. feet/inches (USA), metres/cm (GB)" msgstr "" #: ../../docs/tutorials/i18n/internationalizing_games.rst:107 -msgid "This automatic translation behavior may be undesirable in certain cases. For instance, when using a Label to display a player's name, you most likely don't want the player's name to be translated if it matches a translation key. To disable automatic translation on a specific node, disable **Localization > Auto Translate** in the inspector." +msgid "It can get more complex however. Imagine you offer different content in Europe and in China (e.g. in an MMO). You will need to translate each of those content variations into many languages and store and load them accordingly." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:113 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:112 +msgid "Converting keys to text" +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:114 +msgid "Some controls, such as :ref:`Button ` and :ref:`Label `, will automatically fetch a translation if their text matches a translation key. For example, if a label's text is ``MAIN_SCREEN_GREETING1`` and that key exists in the current translation, then the text will automatically be translated." +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:119 +msgid "This automatic translation behavior may be undesirable in certain cases. For instance, when using a Label to display a player's name, you most likely don't want the player's name to be translated if it matches a translation key. To disable automatic translation on a specific node, set the :ui:`Auto Translate > Mode` to ``Disabled`` in the inspector." +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:125 msgid "In code, the :ref:`Object.tr() ` function can be used. This will just look up the text in the translations and convert it if found:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:129 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:141 msgid "If no text is displayed after changing the language, try to use a different font. The default project font only supports a subset of the Latin-1 character set, which cannot be used to display languages like Russian or Chinese." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:133 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:145 msgid "A good resource for multilingual fonts is `Noto Fonts `__. Make sure to download the correct variation if you're using a less common language." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:137 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:149 msgid "Once you've downloaded the font, load the TTF file into a DynamicFont resource and use it as a custom font of your Control node. For better reusability, associate a new a Theme resource to your root Control node and define the DynamicFont as the Default Font in the theme." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:143 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:155 msgid "Placeholders" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:145 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:157 msgid "To feature placeholders in your translated strings, use :ref:`doc_gdscript_printf` or the equivalent feature in C#. This lets translators move the location of the placeholder in the string freely, which allows translations to sound more natural. Named placeholders with the ``String.format()`` function should be used whenever possible, as they also allow translators to choose the *order* in which placeholders appear:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:164 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:178 msgid "Translation contexts" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:166 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:180 msgid "If you're using plain English as source strings (rather than message codes ``LIKE_THIS``), you may run into ambiguities when you have to translate the same English string to different strings in certain target languages. You can optionally specify a *translation context* to resolve this ambiguity and allow target languages to use different strings, even though the source string is identical:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:191 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:207 msgid "Pluralization" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:193 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:209 msgid "Most languages require different strings depending on whether an object is in singular or plural form. However, hardcoding the \"is plural\" condition depending on whether there is more than 1 object is not valid in all languages." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:197 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:213 msgid "Some languages have more than two plural forms, and the rules on the number of objects required for each plural form vary. Godot offers support for *pluralization* so that the target locales can handle this automatically." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:201 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:217 msgid "Pluralization is meant to be used with positive (or zero) integer numbers only. Negative and floating-point values usually represent physical entities for which singular and plural don't clearly apply." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:216 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:232 msgid "This can be combined with a context if needed:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:231 -msgid "Providing pluralized translations is only supported with :ref:`doc_localization_using_gettext`, not CSV." -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:235 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:246 msgid "Making controls resizable" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:237 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:248 msgid "The same text in different languages can vary greatly in length. For this, make sure to read the tutorial on :ref:`doc_size_and_anchors`, as dynamically adjusting control sizes may help. :ref:`Container ` can be useful, as well as the text wrapping options available in :ref:`Label `." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:243 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:254 msgid "To check whether your UI can accommodate translations with longer strings than the original, you can enable :ref:`pseudolocalization ` in the advanced Project Settings. This will replace all your localizable strings with longer versions of themselves, while also replacing some characters in the original strings with accented versions (while still being readable). Placeholders are kept as-is, so that they keep working when pseudolocalization is enabled." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:251 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:262 msgid "For example, the string ``Hello world, this is %s!`` becomes ``[Ĥéłłô ŵôŕłd́, ŧh̀íš íš %s!]`` when pseudolocalization is enabled." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:254 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:265 msgid "While looking strange at first, pseudolocalization has several benefits:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:256 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:267 msgid "It lets you spot non-localizable strings quickly, so you can go over them and make them localizable (if it makes sense to do so)." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:258 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:269 msgid "It lets you check UI elements that can't fit long strings. Many languages will feature much longer translations than the source text, so it's important to ensure your UI can accommodate longer-than-usual strings." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:261 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:272 msgid "It lets you check whether your font contains all the characters required to support various languages. However, since the goal of pseudolocalization is to keep the original strings readable, it's not an effective test for checking whether a font can support :abbr:`CJK (Chinese, Japanese, Korean)` or right-to-left languages." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:267 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:278 msgid "The project settings allow you to tune pseudolocalization behavior, so that you can disable parts of it if desired." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:271 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:282 msgid "TranslationServer" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:273 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:284 msgid "Godot has a server handling low-level translation management called the :ref:`TranslationServer `. Translations can be added or removed during runtime; the current language can also be changed at runtime." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:281 -msgid "Bidirectional text and UI Mirroring" -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:283 -msgid "Arabic and Hebrew are written from right to left (except for the numbers and Latin words mixed in), and the user interface for these languages should be mirrored as well. In some languages the shape of a glyph changes depending on the surrounding characters." -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:287 -msgid "Support for bidirectional writing systems and UI mirroring is transparent, you don't usually need to change anything or have any knowledge of the specific writing system." -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:290 -msgid "For RTL languages, Godot will automatically do the following changes to the UI:" -msgstr "" - #: ../../docs/tutorials/i18n/internationalizing_games.rst:292 -msgid "Mirrors left/right anchors and margins." -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:293 -msgid "Swaps left and right text alignment." +msgid "Bidirectional text and UI mirroring" msgstr "" #: ../../docs/tutorials/i18n/internationalizing_games.rst:294 -msgid "Mirrors horizontal order of the child controls in the containers, and items in Tree/ItemList controls." -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:295 -msgid "Uses mirrored order of the internal control elements (e.g. OptionButton dropdown button, checkbox alignment, List column order, Tree item icons and connecting line alignment, e.t.c.), in some cases mirrored controls use separate theme styles." -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:296 -msgid "Coordinate system is not mirrored, and non-UI nodes (sprites, e.t.c) are not affected." +msgid "Arabic and Hebrew are written from right to left (except for the numbers and Latin words mixed in), and the user interface for these languages should be mirrored as well. In some languages the shape of a glyph changes depending on the surrounding characters." msgstr "" #: ../../docs/tutorials/i18n/internationalizing_games.rst:298 -msgid "It is possible to override text and control layout direction by using the following control properties:" -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:300 -msgid "``text_direction``, sets the base text direction. When set to \"auto\", direction depends on the first strong directional character in the text according to the Unicode Bidirectional Algorithm," +msgid "Support for bidirectional writing systems and UI mirroring is transparent, you don't usually need to change anything or have any knowledge of the specific writing system." msgstr "" #: ../../docs/tutorials/i18n/internationalizing_games.rst:301 -msgid "``language``, overrides current project locale." -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:302 -msgid "``structured_text_bidi_override`` property and ``_structured_text_parser`` callback, enables special handling for structured text." +msgid "For RTL languages, Godot will automatically do the following changes to the UI:" msgstr "" #: ../../docs/tutorials/i18n/internationalizing_games.rst:303 -msgid "``layout_direction``, overrides control mirroring." +msgid "Mirrors left/right anchors and margins." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:309 -msgid "You can see how right-to-left typesetting works in action using the `BiDI and Font Features demo project `__." +#: ../../docs/tutorials/i18n/internationalizing_games.rst:304 +msgid "Swaps left and right text alignment." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:313 -msgid "Adding break iterator data to exported project" +#: ../../docs/tutorials/i18n/internationalizing_games.rst:305 +msgid "Mirrors horizontal order of the child controls in the containers, and items in Tree/ItemList controls." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:315 -msgid "Some languages are written without spaces. In those languages, word and line breaking require more than rules over character sequences. Godot includes ICU rule and dictionary-based break iterator data, but this data is not included in exported projects by default." +#: ../../docs/tutorials/i18n/internationalizing_games.rst:307 +msgid "Uses mirrored order of the internal control elements (e.g., OptionButton dropdown button, CheckBox/CheckButton alignment, List column order, TreeItem icons and connecting line alignment). In some cases, mirrored controls use separate theme styles." +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:311 +msgid "Coordinate system is **not** mirrored." +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:312 +msgid "Non-UI nodes (sprites, etc.) are **not** affected." +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:314 +msgid "It is possible to override text and control layout direction by using the following control properties:" +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:317 +msgid "``text_direction``, sets the base text direction. When set to \"auto\", the direction depends on the first strong directional character in the text according to the Unicode Bidirectional Algorithm." msgstr "" #: ../../docs/tutorials/i18n/internationalizing_games.rst:320 -msgid "To include it, go to **Project → Project Settings**, enable **Internationalization → Locale → Include Text Server Data**, then export the project. Break iterator data is about 4 MB in size." +msgid "``language``, overrides the current project locale." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:324 -msgid "Structured text BiDi override" +#: ../../docs/tutorials/i18n/internationalizing_games.rst:321 +msgid "The ``structured_text_bidi_override`` property and ``_structured_text_parser`` callback, enable special handling for structured text." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:326 -msgid "Unicode BiDi algorithm is designed to work with natural text and it's incapable of handling text with the higher level order, like file names, URIs, email addresses, regular expressions or source code." +#: ../../docs/tutorials/i18n/internationalizing_games.rst:323 +msgid "``layout_direction``, overrides control mirroring." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:332 -msgid "For example, the path for this shown directory structure will be displayed incorrectly (top \"LineEdit\" control). \"File\" type structured text override splits text into segments, then BiDi algorithm is applied to each of them individually to correctly display directory names in any language and preserve correct order of the folders (bottom \"LineEdit\" control)." +#: ../../docs/tutorials/i18n/internationalizing_games.rst:329 +msgid "You can see how right-to-left typesetting works in action using the `BiDI and Font Features demo project `__." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:337 -msgid "Custom callbacks provide a way to override BiDi for the other types of structured text." +#: ../../docs/tutorials/i18n/internationalizing_games.rst:333 +msgid "Adding break iterator data to exported project" +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:335 +msgid "Some languages are written without spaces. In those languages, word and line breaking require more than rules over character sequences. Godot includes ICU rule and dictionary-based break iterator data, but this data is not included in exported projects by default." msgstr "" #: ../../docs/tutorials/i18n/internationalizing_games.rst:340 +msgid "To include it, go to :menu:`Project > Project Settings > General > Internationalization > Locale` and enable :ui:`Include Text Server Data`, then export the project. Break iterator data is about 4 MB in size." +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:345 +msgid "Structured text BiDi override" +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:347 +msgid "Unicode BiDi algorithm is designed to work with natural text and it's incapable of handling text with the higher level order, like file names, URIs, email addresses, regular expressions or source code." +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:353 +msgid "For example, the path for this shown directory structure will be displayed incorrectly (top \"LineEdit\" control). \"File\" type structured text override splits text into segments, then BiDi algorithm is applied to each of them individually to correctly display directory names in any language and preserve correct order of the folders (bottom \"LineEdit\" control)." +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:358 +msgid "Custom callbacks provide a way to override BiDi for the other types of structured text." +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:361 msgid "Localizing numbers" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:342 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:363 msgid "Controls specifically designed for number input or output (e.g. ProgressBar, SpinBox) will use localized numbering system automatically, for the other control :ref:`TextServer.format_number(string, language) ` can be used to convert Western Arabic numbers (0..9) to the localized numbering system and :ref:`TextServer.parse_number(string, language) ` to convert it back." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:350 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:371 msgid "Localizing icons and images" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:352 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:373 msgid "Icons with left and right pointing arrows which may need to be reversed for Arabic and Hebrew locales, in case they indicate movement or direction (e.g. back/forward buttons). Otherwise, they can remain the same." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:357 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:378 msgid "Testing translations" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:359 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:380 msgid "You may want to test a project's translation before releasing it. Godot provides three ways to do this." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:362 -msgid "First, in the Project Settings, under :menu:`Internationalization > Locale` (with advanced settings enabled), there is a **Test** property. Set this property to the locale code of the language you want to test. Godot will run the project with that locale when the project is run (either from the editor or when exported)." +#: ../../docs/tutorials/i18n/internationalizing_games.rst:383 +msgid "Under :menu:`Project > Project Settings > General > Internationalization > Locale` (with advanced settings enabled) is a :ui:`Test` property. Set this property to the locale code of the language you want to test. Godot will run the project with that locale when the project is run (either from the editor or when exported)." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:369 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:390 msgid "Keep in mind that since this is a project setting, it will show up in version control when it is set to a non-empty value. Therefore, it should be set back to an empty value before committing changes to version control." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:373 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:394 msgid "Second, from within the editor go to the top bar and click on :button:`View` on the top bar, then go down to :ui:`Preview Translation` and select the language you want to preview." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:378 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:399 msgid "All text in scenes in the editor should now be displayed using the selected language." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:380 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:401 msgid "Translations can also be tested when :ref:`running Godot from the command line `. For example, to test a game in French, the following argument can be supplied:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:389 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:410 msgid "Translating the project name" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:391 -msgid "The project name becomes the app name when exporting to different operating systems and platforms. To specify the project name in more than one language go to **Project > Project Settings> Application > Config**. From here click on the button that says ``Localizable String (Size 0)``. Now there should be a button below that which says ``Add Translation``. Click on that and it will take you to a page where you can choose the language (and country if needed) for your project name translation. After doing that you can now type in the localized name." +#: ../../docs/tutorials/i18n/internationalizing_games.rst:412 +msgid "The project name becomes the app name when exporting to different operating systems and platforms. To specify the project name in more than one language go to :menu:`Project > Project Settings > General > Application > Config`. From here click on the :button:`Localizable String (Size 0)` button, then the :button:`Add Translation` button. It will take you to a page where you can choose the language (and country if needed) for your project name translation. After doing that you can now type in the localized name." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:402 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:423 msgid "If you are unsure about the language code to use, refer to the :ref:`list of locale codes `." msgstr "" diff --git a/sphinx/templates/tutorials/i18n/locales.pot b/sphinx/templates/tutorials/i18n/locales.pot index c2064c796e..9c038839f5 100644 --- a/sphinx/templates/tutorials/i18n/locales.pot +++ b/sphinx/templates/tutorials/i18n/locales.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/i18n/localization_using_gettext.pot b/sphinx/templates/tutorials/i18n/localization_using_gettext.pot index 619a833705..ce3f1e5806 100644 --- a/sphinx/templates/tutorials/i18n/localization_using_gettext.pot +++ b/sphinx/templates/tutorials/i18n/localization_using_gettext.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -20,7 +20,7 @@ msgid "Localization using gettext (PO files)" msgstr "" #: ../../docs/tutorials/i18n/localization_using_gettext.rst:6 -msgid "In addition to importing translations in :ref:`CSV format `, Godot also supports loading translation files written in the GNU gettext format (text-based ``.po`` and compiled ``.mo`` since Godot 4.0)." +msgid "In addition to importing translations in :ref:`CSV format `, Godot also supports loading translation files written in the GNU gettext format (text-based ``.po`` and compiled ``.mo``)." msgstr "" #: ../../docs/tutorials/i18n/localization_using_gettext.rst:11 @@ -36,282 +36,282 @@ msgid "Advantages" msgstr "" #: ../../docs/tutorials/i18n/localization_using_gettext.rst:21 -msgid "gettext is a standard format, which can be edited using any text editor or GUI editors such as `Poedit `_. This can be significant as it provides a lot of tools for translators, such as marking outdated strings, finding strings that haven't been translated etc." +msgid "gettext is a standard format, which can be edited using any text editor or GUI editors such as `Poedit `_. This can be significant as it provides a lot of tools for translators, such as marking outdated strings, finding strings that haven't been translated, etc." msgstr "" #: ../../docs/tutorials/i18n/localization_using_gettext.rst:25 -msgid "gettext supports plurals and context." -msgstr "" - -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:26 msgid "gettext is supported by translation platforms such as `Transifex `_ and `Weblate `_, which makes it easier for people to collaborate to localization." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:29 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:28 msgid "Compared to CSV, gettext files work better with version control systems like Git, as each locale has its own messages file." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:31 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:30 msgid "Multiline strings are more convenient to edit in gettext PO files compared to CSV files." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:35 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:34 msgid "Disadvantages" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:37 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:36 msgid "gettext PO files have a more complex format than CSV and can be harder to grasp for people new to software localization." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:39 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:38 msgid "People who maintain localization files will have to install gettext tools on their system. However, as Godot supports using text-based message files (``.po``), translators can test their work without having to install gettext tools." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:42 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:41 msgid "gettext PO files usually use English as the base language. Translators will use this base language to translate to other languages. You could still user other languages as the base language, but this is not common." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:47 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:46 msgid "Installing gettext tools" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:49 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:48 msgid "The command line gettext tools are required to perform maintenance operations, such as updating message files. Therefore, it's strongly recommended to install them." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:53 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:52 msgid "**Windows:** Download an installer from `this page `_. Any architecture and binary type (shared or static) works; if in doubt, choose the 64-bit static installer." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:57 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:56 msgid "**macOS:** Install gettext either using `Homebrew `_ with the ``brew install gettext`` command, or using `MacPorts `_ with the ``sudo port install gettext`` command." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:61 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:60 msgid "**Linux:** On most distributions, install the ``gettext`` package from your distribution's package manager." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:64 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:63 msgid "For a GUI tool you can get Poedit from its `Official website `_. The basic version is open source and available under the MIT license." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:68 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:67 msgid "Creating the PO template" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:71 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:70 msgid "Automatic generation using the editor" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:73 -msgid "Since Godot 4.0, the editor can generate a PO template automatically from specified scene and GDScript files. This POT generation also supports translation contexts and pluralization if used in a script, with the optional second argument of ``tr()`` and the ``tr_n()`` method." +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:72 +msgid "The editor can generate a PO template automatically from specified scene and GDScript files. This POT generation also supports translation contexts and pluralization if used in a script, with the optional second argument of ``tr()`` and the ``tr_n()`` method." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:78 -msgid "Open the Project Settings' **Localization > POT Generation** tab, then use the **Add…** button to specify the path to your project's scenes and scripts that contain localizable strings:" +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:77 +msgid "Open :menu:`Project > Project Settings > Localization > Template Generation`, then use the :button:`Add…` button to specify the path to your project's scenes and scripts that contain localizable strings:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:82 -msgid "Creating a PO template in the Localization > POT Generation tab of the Project Settings" +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:81 +msgid "Creating a PO template in the Localization > Template Generation tab of the Project Settings" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:86 -msgid "Creating a PO template in the **Localization > POT Generation** tab of the Project Settings" +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:85 +msgid "Creating a PO template in the :menu:`Localization > Template Generation` tab of the :ui:`Project Settings`" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:88 -msgid "After adding at least one scene or script, click **Generate POT** in the top-right corner, then specify the path to the output file. This file can be placed anywhere in the project directory, but it's recommended to keep it in a subdirectory such as ``locale``, as each locale will be defined in its own file." +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:87 +msgid "After adding at least one scene or script, click :button:`Generate` in the top-right corner, then specify the path to the output file with a ``pot`` file extension. This file can be placed anywhere in the project directory, but it's recommended to keep it in a subdirectory such as ``locale``, as each locale will be defined in its own file." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:93 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:92 msgid "See :ref:`below ` for how to add comments for translators or exclude some strings from being added to the PO template for GDScript files." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:96 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:95 msgid "You can then move over to :ref:`creating a messages file from a PO template `." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:101 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:100 msgid "Remember to regenerate the PO template after making any changes to localizable strings, or after adding new scenes or scripts. Otherwise, newly added strings will not be localizable and translators won't be able to update translations for outdated strings." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:107 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:106 msgid "Manual creation" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:109 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:108 msgid "If the automatic generation approach doesn't work out for your needs, you can create a PO template by hand in a text editor. This file can be placed anywhere in the project directory, but it's recommended to keep it in a subdirectory, as each locale will be defined in its own file." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:114 -msgid "Create a directory named ``locale`` in the project directory. In this directory, save a file named ``messages.pot`` with the following contents:" +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:113 +msgid "Create a directory named ``locale`` in the project directory. In this directory, save a file named ``messages.pot`` with the following content:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:138 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:137 msgid "Messages in gettext are made of ``msgid`` and ``msgstr`` pairs. ``msgid`` is the source string (usually in English), ``msgstr`` will be the translated string." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:144 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:143 msgid "The ``msgstr`` value in PO template files (``.pot``) should **always** be empty. Localization will be done in the generated ``.po`` files instead." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:150 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:149 msgid "Creating a messages file from a PO template" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:152 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:151 msgid "The ``msginit`` command is used to turn a PO template into a messages file. For instance, to create a French localization file, use the following command while in the ``locale`` directory:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:160 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:159 msgid "The command above will create a file named ``fr.po`` in the same directory as the PO template." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:163 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:162 msgid "Alternatively, you can do that graphically using Poedit, or by uploading the POT file to your web platform of choice." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:167 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:166 msgid "Loading a messages file in Godot" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:169 -msgid "To register a messages file as a translation in a project, open the **Project Settings**, then go to the **Localization** tab. In **Translations**, click **Add…** then choose the ``.po`` or ``.mo`` file in the file dialog. The locale will be inferred from the ``\"Language: \\n\"`` property in the messages file." +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:168 +msgid "To register a messages file as a translation in a project, open the :ui:`Project Settings`, then go to :menu:`Localization > Translations`, click :button:`Add…` then choose the ``.po`` or ``.mo`` file in the file dialog. The locale will be inferred from the ``\"Language: \\n\"`` property in the messages file." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:175 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:174 msgid "See :ref:`doc_internationalizing_games` for more information on importing and testing translations in Godot." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:179 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:178 msgid "Updating message files to follow the PO template" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:181 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:180 msgid "After updating the PO template, you will have to update message files so that they contain new strings, while removing strings that are no longer present in the PO template. This can be done automatically using the ``msgmerge`` tool:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:191 -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:316 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:190 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:332 msgid "If you want to keep a backup of the original message file (which would be saved as ``fr.po~`` in this example), remove the ``--backup=none`` argument." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:196 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:195 msgid "After running ``msgmerge``, strings which were modified in the source language will have a \"fuzzy\" comment added before them in the ``.po`` file. This comment denotes that the translation should be updated to match the new source string, as the translation will most likely be inaccurate until it's updated." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:201 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:200 msgid "Strings with \"fuzzy\" comments will **not** be read by Godot until the translation is updated and the \"fuzzy\" comment is removed." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:205 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:204 msgid "Checking the validity of a PO file or template" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:207 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:206 msgid "It is possible to check whether a gettext file's syntax is valid." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:209 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:208 msgid "If you open with Poeditor, it will display the appropriate warnings if there's some syntax errors. You can also verify by running the gettext command below:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:216 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:215 msgid "If there are syntax errors or warnings, they will be displayed in the console. Otherwise, ``msgfmt`` won't output anything." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:220 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:219 msgid "Using binary MO files (useful for large projects only)" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:222 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:221 msgid "For large projects with several thousands of strings to translate or more, it can be worth it to use binary (compiled) MO message files instead of text-based PO files. Binary MO files are smaller and faster to read than the equivalent PO files." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:227 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:226 msgid "You can generate an MO file with the command below:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:233 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:232 msgid "If the PO file is valid, this command will create an ``fr.mo`` file besides the PO file. This MO file can then be loaded in Godot as described above." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:236 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:235 msgid "The original PO file should be kept in version control so you can update your translation in the future. In case you lose the original PO file and wish to decompile an MO file into a text-based PO file, you can do so with:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:244 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:243 msgid "The decompiled file will not include comments or fuzzy strings, as these are never compiled in the MO file in the first place." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:250 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:249 msgid "Extracting localizable strings from GDScript files" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:252 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:251 msgid "The built-in `editor plugin `_ recognizes a variety of patterns in source code to extract localizable strings from GDScript files, including but not limited to the following:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:256 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:255 msgid "``tr()``, ``tr_n()``, ``atr()``, and ``atr_n()`` calls;" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:257 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:256 msgid "assigning properties ``text``, ``placeholder_text``, and ``tooltip_text``;" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:258 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:257 msgid "``add_tab()``, ``add_item()``, ``set_tab_title()``, and other calls;" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:259 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:258 msgid "``FileDialog`` filters like ``\"*.png ; PNG Images\"``." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:263 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:262 msgid "The argument or right operand must be a constant string, otherwise the plugin will not be able to evaluate the expression and will ignore it." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:266 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:265 msgid "If the plugin extracts unnecessary strings, you can ignore them with the ``NO_TRANSLATE`` comment. You can also provide additional information for translators using the ``TRANSLATORS:`` comment. These comments must be placed either on the same line as the recognized pattern or precede it." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:284 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:283 msgid "Using context" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:286 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:285 msgid "The ``context`` parameter can be used to differentiate the situation where a translation is used, or to differentiate polysemic words (words with multiple meanings)." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:289 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:288 msgid "For example:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:299 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:297 +msgid "In a gettext PO file, a string with a context can be defined as follows:" +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:312 msgid "Updating PO files" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:301 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:314 msgid "Some time or later, you'll add new content to our game, and there will be new strings that need to be translated. When this happens, you'll need to update the existing PO files to include the new strings." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:304 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:318 msgid "First, generate a new POT file containing all the existing strings plus the newly added strings. After that, merge the existing PO files with the new POT file. There are two ways to do this:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:307 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:322 msgid "Use a gettext editor, and it should have an option to update a PO file from a POT file." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:309 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:325 msgid "Use the gettext ``msgmerge`` tool:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:320 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:336 msgid "POT generation custom plugin" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:322 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:338 msgid "If you have any extra file format to deal with, you could write a custom plugin to parse and and extract the strings from the custom file. This custom plugin will extract the strings and write into the POT file when you hit **Generate POT**. To learn more about how to create the translation parser plugin, see :ref:`EditorTranslationParserPlugin `." msgstr "" diff --git a/sphinx/templates/tutorials/i18n/localization_using_spreadsheets.pot b/sphinx/templates/tutorials/i18n/localization_using_spreadsheets.pot index b186e8e1ed..6631227631 100644 --- a/sphinx/templates/tutorials/i18n/localization_using_spreadsheets.pot +++ b/sphinx/templates/tutorials/i18n/localization_using_spreadsheets.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -79,7 +79,7 @@ msgid "KEYN" msgstr "" #: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:37 -msgid "The \"lang\" tags must represent a language, which must be one of the :ref:`valid locales ` supported by the engine, or they must start with an underscore (`_`), which means the related column is served as comment and won't be imported. The \"KEY\" tags must be unique and represent a string universally (they are usually in uppercase, to differentiate from other strings). These keys will be replaced at runtime by the matching translated string. Note that the case is important, \"KEY1\" and \"Key1\" will be different keys. The top-left cell is ignored and can be left empty or having any content. Here's an example:" +msgid "The \"lang\" tags must represent a language, which must be one of the :ref:`valid locales ` supported by the engine, or they must start with an underscore (``_``), which means the related column is served as comment and won't be imported. The ``KEY`` tags must be unique and represent a string universally. By convention, these are usually in uppercase to differentiate them from other strings. These keys will be replaced at runtime by the matching translated string. Note that the case is important: ``KEY1`` and ``Key1`` will be different keys. The top-left cell is ignored and can be left empty or having any content. Here's an example:" msgstr "" #: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:48 @@ -163,21 +163,61 @@ msgid "The same example is shown below as a comma-separated plain text file, whi msgstr "" #: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:78 -msgid "CSV importer" +msgid "Specifying plural forms" msgstr "" #: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:80 -msgid "Godot will treat CSV files as translations by default. It will import them and generate one or more compressed translation resource files next to it." +msgid "Since Godot 4.6, it is possible to specify :ref:`plural forms ` in CSV files." msgstr "" #: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:83 +msgid "This is done by adding a column named ``?plural`` anywhere in the table (except on the first column, which is reserved for translation keys). By convention, it's recommended to place it on the second column. Note that in the example below, the key column is the one that contains English localization." +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:99 +msgid "Automatic Control translation is not supported when using plural forms. You must translate the string manually using :ref:`tr_n()`." +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:103 +msgid "Specifying translation contexts" +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:105 +msgid "Since Godot 4.6, it is possible to specify :ref:`translation contexts ` in CSV files. This can be used to disambiguate identical source strings that have different meanings. While this is generally not needed when using translation keys ``LIKE_THIS``, it's useful when using plain English text as translation keys." +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:111 +msgid "This is done by adding a column named ``?context`` column anywhere in the table (except on the first column, which is reserved for translation keys). By convention, it's recommended to place it on the second column, or after ``?plural`` if it's also used. Note that in the example below, the key column is the one that contains English localization." +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:125 +msgid "Automatic Control translation is not supported when using context. You must translate the string manually using :ref:`tr() ` or :ref:`tr_n() `." +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:130 +msgid "CSV importer" +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:132 +msgid "Godot will treat CSV files as translations by default. It will import them and generate one or more compressed translation resource files next to it." +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:135 msgid "Importing will also add the translation to the list of translations to load when the game runs, specified in project.godot (or the project settings). Godot allows loading and removing translations at runtime as well." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:88 -msgid "Select the ``.csv`` file and access the **Import** dock to define import options. You can toggle the compression of the imported translations, and select the delimiter to use when parsing the CSV file." +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:140 +msgid "Select the ``.csv`` file and access the :ui:`Import` dock to define import options. You can toggle the compression of the imported translations, and select the delimiter to use when parsing the CSV file." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:94 -msgid "Be sure to click **Reimport** after any change to these options." +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:146 +msgid "Be sure to click :button:`Reimport` after any change to these options." +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:149 +msgid "Loading the CSV file as a translation" +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:151 +msgid "Once a CSV file is imported, it is **not** automatically registered as a translation source for the project. Remember to follow the steps described in :ref:`doc_internationalizing_games_configuring_imported_translation` so that the translation is actually used when running the project." msgstr "" diff --git a/sphinx/templates/tutorials/i18n/pseudolocalization.pot b/sphinx/templates/tutorials/i18n/pseudolocalization.pot index de143f2555..4ce15a467e 100644 --- a/sphinx/templates/tutorials/i18n/pseudolocalization.pot +++ b/sphinx/templates/tutorials/i18n/pseudolocalization.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -40,7 +40,7 @@ msgid "Enabling and configuring pseudolocalization" msgstr "" #: ../../docs/tutorials/i18n/pseudolocalization.rst:26 -msgid "Enabling pseudolocalization and the configurations related to it is as simple as toggling a checkbox in the project settings. These settings can be found in **Project → Project Settings → General → Internationalization → Pseudolocalization** after enabling the **Advanced** toggle in the project settings dialog:" +msgid "Enabling pseudolocalization and the configurations related to it is as simple as toggling a checkbox in the project settings. These settings can be found in :menu:`Project > Project Settings > General > Internationalization > Pseudolocalization` after enabling the :button:`Advanced` toggle in the project settings dialog:" msgstr "" #: ../../docs/tutorials/i18n/pseudolocalization.rst:33 diff --git a/sphinx/templates/tutorials/inputs/controllers_gamepads_joysticks.pot b/sphinx/templates/tutorials/inputs/controllers_gamepads_joysticks.pot index 147f661b90..c579e9ca06 100644 --- a/sphinx/templates/tutorials/inputs/controllers_gamepads_joysticks.pot +++ b/sphinx/templates/tutorials/inputs/controllers_gamepads_joysticks.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -183,90 +183,86 @@ msgstr "" msgid "To combat this, Godot enables power saving prevention by default when a project is running. If you notice the system is turning off its display when playing with a gamepad, check the value of **Display > Window > Energy Saving > Keep Screen On** in the Project Settings." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:283 -msgid "On Linux, power saving prevention requires the engine to be able to use D-Bus. Check whether D-Bus is installed and reachable if running the project within a Flatpak, as sandboxing restrictions may make this impossible by default." -msgstr "" - -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:288 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:284 msgid "Troubleshooting" msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:292 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:288 msgid "You can view a list of `known issues with controller support `__ on GitHub." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:297 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:293 msgid "My controller isn't recognized by Godot." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:299 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:295 msgid "First, check that your controller is recognized by other applications. You can use the `Gamepad Tester `__ website to confirm that your controller is recognized." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:303 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:299 msgid "On Windows Godot only supports up to 4 controllers at a time. This is because Godot uses the XInput API, which is limited to supporting 4 controllers at once. Additional controllers above this limit are ignored by Godot." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:308 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:304 msgid "My controller has incorrectly mapped buttons or axes." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:310 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:306 msgid "First, if your controller provides some kind of firmware update utility, make sure to run it to get the latest fixes from the manufacturer. For instance, Xbox One and Xbox Series controllers can have their firmware updated using the `Xbox Accessories app `__. (This application only runs on Windows, so you have to use a Windows machine or a Windows virtual machine with USB support to update the controller's firmware.) After updating the controller's firmware, unpair the controller and pair it again with your PC if you are using the controller in wireless mode." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:319 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:315 msgid "If buttons are incorrectly mapped, this may be due to an erroneous mapping from the SDL game controller database used by Godot or the `Godot game controller database `__. In this case, you will need to create a custom mapping for your controller." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:324 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:320 msgid "There are many ways to create mappings. One option is to use the mapping wizard in the `official Joypads demo `__. Once you have a working mapping for your controller, you can test it by defining the ``SDL_GAMECONTROLLERCONFIG`` environment variable before running Godot:" msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:345 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:341 msgid "To test mappings on non-desktop platforms or to distribute your project with additional controller mappings, you can add them by calling :ref:`Input.add_joy_mapping() ` as early as possible in a script's ``_ready()`` function." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:350 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:346 msgid "Once you are satisfied with the custom mapping, you can contribute it for the next Godot version by opening a pull request on the `Godot game controller database `__." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:355 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:351 msgid "My controller works on a given platform, but not on another platform." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:358 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:354 msgid "Linux" msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:360 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:356 msgid "If you're using a self-compiled engine binary, make sure it was compiled with udev support. This is enabled by default, but it is possible to disable udev support by specifying ``udev=no`` on the SCons command line. If you're using an engine binary supplied by a Linux distribution, double-check whether it was compiled with udev support." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:366 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:362 msgid "Controllers can still work without udev support, but it is less reliable as regular polling must be used to check for controllers being connected or disconnected during gameplay (hotplugging)." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:371 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:367 msgid "Android/iOS" msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:373 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:369 msgid "As described at the top of the page, controller support on mobile platforms relies on a custom implementation instead of using SDL for input. This means controller support may be less reliable than on desktop platforms." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:377 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:373 msgid "Support for SDL-based controller input on mobile platforms is `planned `__ in a future release." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:382 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:378 msgid "Web" msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:384 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:380 msgid "Web controller support is often less reliable compared to \"native\" platforms. The quality of controller support tends to vary wildly across browsers. As a result, you may have to instruct your players to use a different browser if they can't get their controller to work." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:389 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:385 msgid "Like for mobile platforms, support for SDL-based controller input on the web platform is `planned `__ in a future release." msgstr "" diff --git a/sphinx/templates/tutorials/inputs/custom_mouse_cursor.pot b/sphinx/templates/tutorials/inputs/custom_mouse_cursor.pot index f036a44419..9a1101a1bd 100644 --- a/sphinx/templates/tutorials/inputs/custom_mouse_cursor.pot +++ b/sphinx/templates/tutorials/inputs/custom_mouse_cursor.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/inputs/handling_quit_requests.pot b/sphinx/templates/tutorials/inputs/handling_quit_requests.pot index dd6da16cfe..6b2cc0f3ed 100644 --- a/sphinx/templates/tutorials/inputs/handling_quit_requests.pot +++ b/sphinx/templates/tutorials/inputs/handling_quit_requests.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/inputs/index.pot b/sphinx/templates/tutorials/inputs/index.pot index 12a379a1e0..b3e7cf8b8c 100644 --- a/sphinx/templates/tutorials/inputs/index.pot +++ b/sphinx/templates/tutorials/inputs/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/inputs/input_examples.pot b/sphinx/templates/tutorials/inputs/input_examples.pot index 0e8153e496..bbde08c04f 100644 --- a/sphinx/templates/tutorials/inputs/input_examples.pot +++ b/sphinx/templates/tutorials/inputs/input_examples.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/inputs/inputevent.pot b/sphinx/templates/tutorials/inputs/inputevent.pot index 7ff4b497df..57d80d808f 100644 --- a/sphinx/templates/tutorials/inputs/inputevent.pot +++ b/sphinx/templates/tutorials/inputs/inputevent.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/inputs/mouse_and_input_coordinates.pot b/sphinx/templates/tutorials/inputs/mouse_and_input_coordinates.pot index 94171d5ef8..6bd8dc8126 100644 --- a/sphinx/templates/tutorials/inputs/mouse_and_input_coordinates.pot +++ b/sphinx/templates/tutorials/inputs/mouse_and_input_coordinates.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/io/background_loading.pot b/sphinx/templates/tutorials/io/background_loading.pot index 12b2d1ea6b..c8d178c4eb 100644 --- a/sphinx/templates/tutorials/io/background_loading.pot +++ b/sphinx/templates/tutorials/io/background_loading.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/io/binary_serialization_api.pot b/sphinx/templates/tutorials/io/binary_serialization_api.pot index 1060abc036..3878127207 100644 --- a/sphinx/templates/tutorials/io/binary_serialization_api.pot +++ b/sphinx/templates/tutorials/io/binary_serialization_api.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/io/data_paths.pot b/sphinx/templates/tutorials/io/data_paths.pot index b98e2ffcc6..a383cefd23 100644 --- a/sphinx/templates/tutorials/io/data_paths.pot +++ b/sphinx/templates/tutorials/io/data_paths.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -107,49 +107,49 @@ msgstr "" msgid "You can access any file relative to it by writing paths starting with ``res://``, which stands for resources. For example, you can access an image file ``character.png`` located in the project's root folder in code with the following path: ``res://character.png``." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:58 +#: ../../docs/tutorials/io/data_paths.rst:60 msgid "Accessing persistent user data (``user://``)" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:60 +#: ../../docs/tutorials/io/data_paths.rst:62 msgid "To store persistent data files, like the player's save or settings, you want to use ``user://`` instead of ``res://`` as your path's prefix. This is because when the game is running, the project's file system will likely be read-only." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:64 +#: ../../docs/tutorials/io/data_paths.rst:66 msgid "The ``user://`` prefix points to a different directory on the user's device. Unlike ``res://``, the directory pointed at by ``user://`` is created automatically and *guaranteed* to be writable to, even in an exported project." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:68 +#: ../../docs/tutorials/io/data_paths.rst:70 msgid "The location of the ``user://`` folder depends on what is configured in the Project Settings:" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:71 +#: ../../docs/tutorials/io/data_paths.rst:73 msgid "By default, the ``user://`` folder is created within Godot's :ref:`editor data path ` in the ``app_userdata/[project_name]`` folder. This is the default so that prototypes and test projects stay self-contained within Godot's data folder." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:75 +#: ../../docs/tutorials/io/data_paths.rst:77 msgid "If :ref:`application/config/use_custom_user_dir ` is enabled in the Project Settings, the ``user://`` folder is created **next to** Godot's editor data path, i.e. in the standard location for applications data." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:80 +#: ../../docs/tutorials/io/data_paths.rst:82 msgid "By default, the folder name will be inferred from the project name, but it can be further customized with :ref:`application/config/custom_user_dir_name `. This path can contain path separators, so you can use it e.g. to group projects of a given studio with a ``Studio Name/Game Name`` structure." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:86 +#: ../../docs/tutorials/io/data_paths.rst:88 msgid "On desktop platforms, the actual directory paths for ``user://`` are:" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:89 -#: ../../docs/tutorials/io/data_paths.rst:145 +#: ../../docs/tutorials/io/data_paths.rst:91 +#: ../../docs/tutorials/io/data_paths.rst:147 msgid "Type" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:89 -#: ../../docs/tutorials/io/data_paths.rst:145 +#: ../../docs/tutorials/io/data_paths.rst:91 +#: ../../docs/tutorials/io/data_paths.rst:147 msgid "Location" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:91 +#: ../../docs/tutorials/io/data_paths.rst:93 msgid "Default" msgstr "" @@ -165,7 +165,7 @@ msgstr "" msgid "Linux: ``~/.local/share/godot/app_userdata/[project_name]``" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:95 +#: ../../docs/tutorials/io/data_paths.rst:97 msgid "Custom dir" msgstr "" @@ -181,7 +181,7 @@ msgstr "" msgid "Linux: ``~/.local/share/[project_name]``" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:99 +#: ../../docs/tutorials/io/data_paths.rst:101 msgid "Custom dir and name" msgstr "" @@ -197,47 +197,47 @@ msgstr "" msgid "Linux: ``~/.local/share/[custom_user_dir_name]``" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:104 +#: ../../docs/tutorials/io/data_paths.rst:106 msgid "``[project_name]`` is based on the application name defined in the Project Settings, but you can override it on a per-platform basis using :ref:`feature tags `." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:107 +#: ../../docs/tutorials/io/data_paths.rst:109 msgid "On mobile platforms, this path is unique to the project and is not accessible by other applications for security reasons." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:110 +#: ../../docs/tutorials/io/data_paths.rst:112 msgid "On HTML5 exports, ``user://`` will refer to a virtual filesystem stored on the device via IndexedDB. (Interaction with the main filesystem can still be performed through the :ref:`JavaScriptBridge ` singleton.)" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:115 +#: ../../docs/tutorials/io/data_paths.rst:117 msgid "File logging" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:119 +#: ../../docs/tutorials/io/data_paths.rst:121 msgid "Documentation on file logging has been moved to :ref:`doc_logging`." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:122 +#: ../../docs/tutorials/io/data_paths.rst:124 msgid "Converting paths to absolute paths or \"local\" paths" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:124 +#: ../../docs/tutorials/io/data_paths.rst:126 msgid "You can use :ref:`ProjectSettings.globalize_path() ` to convert a \"local\" path like ``res://path/to/file.txt`` to an absolute OS path. For example, :ref:`ProjectSettings.globalize_path() ` can be used to open \"local\" paths in the OS file manager using :ref:`OS.shell_open() ` since it only accepts native OS paths." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:131 +#: ../../docs/tutorials/io/data_paths.rst:133 msgid "To convert an absolute OS path to a \"local\" path starting with ``res://`` or ``user://``, use :ref:`ProjectSettings.localize_path() `. This only works for absolute paths that point to files or folders in your project's root or ``user://`` folders." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:139 +#: ../../docs/tutorials/io/data_paths.rst:141 msgid "Editor data paths" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:141 +#: ../../docs/tutorials/io/data_paths.rst:143 msgid "The editor uses different paths for editor data, editor settings, and cache, depending on the platform. By default, these paths are:" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:147 +#: ../../docs/tutorials/io/data_paths.rst:149 msgid "Editor data" msgstr "" @@ -253,7 +253,7 @@ msgstr "" msgid "Linux: ``~/.local/share/godot/``" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:151 +#: ../../docs/tutorials/io/data_paths.rst:153 msgid "Editor settings" msgstr "" @@ -261,7 +261,7 @@ msgstr "" msgid "Linux: ``~/.config/godot/``" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:155 +#: ../../docs/tutorials/io/data_paths.rst:157 msgid "Cache" msgstr "" @@ -277,38 +277,38 @@ msgstr "" msgid "Linux: ``~/.cache/godot/``" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:160 +#: ../../docs/tutorials/io/data_paths.rst:162 msgid "**Editor data** contains export templates and project-specific data." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:161 +#: ../../docs/tutorials/io/data_paths.rst:163 msgid "**Editor settings** contains the main editor settings configuration file as well as various other user-specific customizations (editor layouts, feature profiles, script templates, etc.)." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:164 +#: ../../docs/tutorials/io/data_paths.rst:166 msgid "**Cache** contains data generated by the editor, or stored temporarily. It can safely be removed when Godot is closed." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:167 +#: ../../docs/tutorials/io/data_paths.rst:169 msgid "Godot complies with the `XDG Base Directory Specification `__ on Linux/\\*BSD. You can override the ``XDG_DATA_HOME``, ``XDG_CONFIG_HOME`` and ``XDG_CACHE_HOME`` environment variables to change the editor and project data paths." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:173 +#: ../../docs/tutorials/io/data_paths.rst:175 msgid "If you use `Godot packaged as a Flatpak `__, the editor data paths will be located in subfolders in ``~/.var/app/org.godotengine.Godot/``." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:181 +#: ../../docs/tutorials/io/data_paths.rst:183 msgid "Self-contained mode" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:183 +#: ../../docs/tutorials/io/data_paths.rst:185 msgid "If you create a file called ``._sc_`` or ``_sc_`` in the same directory as the editor binary (or in `MacOS/Contents/` for a macOS editor .app bundle), Godot will enable *self-contained mode*. This mode makes Godot write all editor data, settings, and cache to a directory named ``editor_data/`` in the same directory as the editor binary. You can use it to create a portable installation of the editor." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:190 +#: ../../docs/tutorials/io/data_paths.rst:192 msgid "The `Steam release of Godot `__ uses self-contained mode by default." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:198 +#: ../../docs/tutorials/io/data_paths.rst:200 msgid "Self-contained mode is not supported in exported projects yet. To read and write files relative to the executable path, use :ref:`OS.get_executable_path() `. Note that writing files in the executable path only works if the executable is placed in a writable location (i.e. **not** Program Files or another directory that is read-only for regular users)." msgstr "" diff --git a/sphinx/templates/tutorials/io/index.pot b/sphinx/templates/tutorials/io/index.pot index 3915e5d68b..b9c06b2991 100644 --- a/sphinx/templates/tutorials/io/index.pot +++ b/sphinx/templates/tutorials/io/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/io/runtime_file_loading_and_saving.pot b/sphinx/templates/tutorials/io/runtime_file_loading_and_saving.pot index aa9df32d5f..0cee5e6ef1 100644 --- a/sphinx/templates/tutorials/io/runtime_file_loading_and_saving.pot +++ b/sphinx/templates/tutorials/io/runtime_file_loading_and_saving.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -176,57 +176,57 @@ msgid "Godot has first-class support for glTF 2.0, both in the editor and export msgstr "" #: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:225 -msgid "Since Godot 4.3, FBX scenes can also be loaded (but not saved) at runtime using the :ref:`class_fbxdocument` and :ref:`class_fbxstate` classes. The code to do so is the same as glTF, but you will need to replace all instances of ``GLTFDocument`` and ``GLTFState`` with ``FBXDocument`` and ``FBXState`` in the code samples below. There are `known issues `__ with runtime FBX loading, so using glTF instead is preferred for now." +msgid "Since Godot 4.3, FBX scenes can also be loaded (but not saved) at runtime using the :ref:`class_fbxdocument` and :ref:`class_fbxstate` classes. The code to do so is the same as glTF, but you will need to replace all instances of ``GLTFDocument`` and ``GLTFState`` with ``FBXDocument`` and ``FBXState`` in the code samples below." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:232 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:231 msgid "Example of loading a glTF scene and appending its root node to the scene:" msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:289 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:288 msgid "When loading a glTF scene, a *base path* must be set so that external resources like textures can be loaded correctly. When loading from a file, the base path is automatically set to the folder containing the file. When loading from a buffer, this base path must be manually set as there is no way for Godot to infer this path." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:295 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:294 msgid "To set the base path, set :ref:`GLTFState.base_path ` on your GLTFState instance *before* calling :ref:`GLTFDocument.append_from_buffer ` or :ref:`GLTFDocument.append_from_file `." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:304 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:303 msgid "Fonts" msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:306 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:305 msgid ":ref:`FontFile.load_dynamic_font ` supports the following font file formats: TTF, OTF, WOFF, WOFF2, PFB, PFM" msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:309 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:308 msgid "On the other hand, :ref:`FontFile.load_bitmap_font ` supports the `BMFont `__ format (``.fnt`` or ``.font``)." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:312 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:311 msgid "Additionally, it is possible to load any font that is installed on the system using Godot's support for :ref:`doc_using_fonts_system_fonts`." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:315 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:314 msgid "Example of loading a font file automatically according to its file extension, then adding it as a theme override to a :ref:`class_Label` node:" msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:374 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:373 msgid "ZIP archives" msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:376 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:375 msgid "Godot supports reading and writing ZIP archives using the :ref:`class_zipreader` and :ref:`class_zippacker` classes. This supports any ZIP file, including files generated by Godot's \"Export PCK/ZIP\" functionality (although these will contain imported Godot resources rather than the original project files)." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:383 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:382 msgid "Use :ref:`ProjectSettings.load_resource_pack ` to load PCK or ZIP files exported by Godot as :ref:`additional data packs `. That approach is preferred for DLCs, as it makes interacting with additional data packs seamless (virtual filesystem)." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:388 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:387 msgid "This ZIP archive support can be combined with runtime image, 3D scene and audio loading to provide a seamless modding experience without requiring users to go through the Godot editor to generate PCK/ZIP files." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:392 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:391 msgid "Example that lists files in a ZIP archive in an :ref:`class_ItemList` node, then writes contents read from it to a new ZIP archive (essentially duplicating the archive):" msgstr "" diff --git a/sphinx/templates/tutorials/io/saving_games.pot b/sphinx/templates/tutorials/io/saving_games.pot index 8691484ab6..a559707029 100644 --- a/sphinx/templates/tutorials/io/saving_games.pot +++ b/sphinx/templates/tutorials/io/saving_games.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/math/beziers_and_curves.pot b/sphinx/templates/tutorials/math/beziers_and_curves.pot index 908a742f58..26333dfc80 100644 --- a/sphinx/templates/tutorials/math/beziers_and_curves.pot +++ b/sphinx/templates/tutorials/math/beziers_and_curves.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/math/index.pot b/sphinx/templates/tutorials/math/index.pot index 8852ad88c8..136bb19a51 100644 --- a/sphinx/templates/tutorials/math/index.pot +++ b/sphinx/templates/tutorials/math/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/math/interpolation.pot b/sphinx/templates/tutorials/math/interpolation.pot index 18dec01b84..e357fd0b3e 100644 --- a/sphinx/templates/tutorials/math/interpolation.pot +++ b/sphinx/templates/tutorials/math/interpolation.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/math/matrices_and_transforms.pot b/sphinx/templates/tutorials/math/matrices_and_transforms.pot index b94e104bc8..0b13ad1adc 100644 --- a/sphinx/templates/tutorials/math/matrices_and_transforms.pot +++ b/sphinx/templates/tutorials/math/matrices_and_transforms.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/math/random_number_generation.pot b/sphinx/templates/tutorials/math/random_number_generation.pot index 20c2a01cd0..5586ee070d 100644 --- a/sphinx/templates/tutorials/math/random_number_generation.pot +++ b/sphinx/templates/tutorials/math/random_number_generation.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/math/vector_math.pot b/sphinx/templates/tutorials/math/vector_math.pot index 174315a0ec..0f89c511a1 100644 --- a/sphinx/templates/tutorials/math/vector_math.pot +++ b/sphinx/templates/tutorials/math/vector_math.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/math/vectors_advanced.pot b/sphinx/templates/tutorials/math/vectors_advanced.pot index f8ea74442b..ffbacf892a 100644 --- a/sphinx/templates/tutorials/math/vectors_advanced.pot +++ b/sphinx/templates/tutorials/math/vectors_advanced.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/migrating/index.pot b/sphinx/templates/tutorials/migrating/index.pot index 69d26c5527..c803fb0750 100644 --- a/sphinx/templates/tutorials/migrating/index.pot +++ b/sphinx/templates/tutorials/migrating/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.1.pot b/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.1.pot index 57869fa545..6a50fcf95d 100644 --- a/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.1.pot +++ b/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.1.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.2.pot b/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.2.pot index 21637c5b3c..1e0037e7fa 100644 --- a/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.2.pot +++ b/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.2.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.3.pot b/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.3.pot index ec464847e2..6b0096d6d7 100644 --- a/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.3.pot +++ b/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.3.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.4.pot b/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.4.pot index c34c1031f7..5933a6a059 100644 --- a/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.4.pot +++ b/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.4.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.5.pot b/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.5.pot index d01c153b7e..d54cd6d87c 100644 --- a/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.5.pot +++ b/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.5.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -722,7 +722,7 @@ msgid "A fix has been made to the 3D model importers to correctly handle non-joi msgstr "" #: ../../docs/tutorials/migrating/upgrading_to_godot_4.5.rst:221 -msgid ":ref:`Resource.duplicate(true) ` (which performs deep duplication) now only duplicates resources internal to the resource file it's called on. In 4.4, this duplicated everything instead, including external resources. If you were deep-duplicating a resource that contained references to other external resources, those external resources aren't duplicated anymore. You must call :ref:`Resource.duplicate_deep(RESOURCE_DEEP_DUPLICATE_ALL) ` instead to keep the old behavior." +msgid ":ref:`Resource.duplicate(true) ` (which performs deep duplication) now only duplicates resources internal to the resource file it's called on. In 4.4, this duplicated everything instead, including external resources. If you were deep-duplicating a resource that contained references to other external resources, those external resources aren't duplicated anymore. You must call :ref:`Resource.duplicate_deep(DEEP_DUPLICATE_ALL) ` instead to keep the old behavior." msgstr "" #: ../../docs/tutorials/migrating/upgrading_to_godot_4.5.rst:231 diff --git a/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.pot b/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.pot index faa63144e9..747dadb13d 100644 --- a/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.pot +++ b/sphinx/templates/tutorials/migrating/upgrading_to_godot_4.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/index.pot b/sphinx/templates/tutorials/navigation/index.pot index e5340ff1d0..b3cce46718 100644 --- a/sphinx/templates/tutorials/navigation/index.pot +++ b/sphinx/templates/tutorials/navigation/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_connecting_navmesh.pot b/sphinx/templates/tutorials/navigation/navigation_connecting_navmesh.pot index 5f4d0f6e8a..e6dc3e279c 100644 --- a/sphinx/templates/tutorials/navigation/navigation_connecting_navmesh.pot +++ b/sphinx/templates/tutorials/navigation/navigation_connecting_navmesh.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_debug_tools.pot b/sphinx/templates/tutorials/navigation/navigation_debug_tools.pot index 118b1dc3b7..77c33abc1b 100644 --- a/sphinx/templates/tutorials/navigation/navigation_debug_tools.pot +++ b/sphinx/templates/tutorials/navigation/navigation_debug_tools.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_different_actor_area_access.pot b/sphinx/templates/tutorials/navigation/navigation_different_actor_area_access.pot index 399f7d7bc5..c3f36e6a35 100644 --- a/sphinx/templates/tutorials/navigation/navigation_different_actor_area_access.pot +++ b/sphinx/templates/tutorials/navigation/navigation_different_actor_area_access.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_different_actor_locomotion.pot b/sphinx/templates/tutorials/navigation/navigation_different_actor_locomotion.pot index 465ac6459a..a95dfbc700 100644 --- a/sphinx/templates/tutorials/navigation/navigation_different_actor_locomotion.pot +++ b/sphinx/templates/tutorials/navigation/navigation_different_actor_locomotion.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_different_actor_types.pot b/sphinx/templates/tutorials/navigation/navigation_different_actor_types.pot index 52a051b11c..02d702669c 100644 --- a/sphinx/templates/tutorials/navigation/navigation_different_actor_types.pot +++ b/sphinx/templates/tutorials/navigation/navigation_different_actor_types.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_introduction_2d.pot b/sphinx/templates/tutorials/navigation/navigation_introduction_2d.pot index 151527a854..652ad6a99a 100644 --- a/sphinx/templates/tutorials/navigation/navigation_introduction_2d.pot +++ b/sphinx/templates/tutorials/navigation/navigation_introduction_2d.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_introduction_3d.pot b/sphinx/templates/tutorials/navigation/navigation_introduction_3d.pot index 6163af35c3..07daf64d33 100644 --- a/sphinx/templates/tutorials/navigation/navigation_introduction_3d.pot +++ b/sphinx/templates/tutorials/navigation/navigation_introduction_3d.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_optimizing_performance.pot b/sphinx/templates/tutorials/navigation/navigation_optimizing_performance.pot index c8da97fe7a..bc5796bab0 100644 --- a/sphinx/templates/tutorials/navigation/navigation_optimizing_performance.pot +++ b/sphinx/templates/tutorials/navigation/navigation_optimizing_performance.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_using_navigationagents.pot b/sphinx/templates/tutorials/navigation/navigation_using_navigationagents.pot index ab5577e9ff..3e7f693239 100644 --- a/sphinx/templates/tutorials/navigation/navigation_using_navigationagents.pot +++ b/sphinx/templates/tutorials/navigation/navigation_using_navigationagents.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_using_navigationlayers.pot b/sphinx/templates/tutorials/navigation/navigation_using_navigationlayers.pot index 7bf478af89..76f360f6fa 100644 --- a/sphinx/templates/tutorials/navigation/navigation_using_navigationlayers.pot +++ b/sphinx/templates/tutorials/navigation/navigation_using_navigationlayers.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_using_navigationlinks.pot b/sphinx/templates/tutorials/navigation/navigation_using_navigationlinks.pot index 3feb945394..76edffe3ec 100644 --- a/sphinx/templates/tutorials/navigation/navigation_using_navigationlinks.pot +++ b/sphinx/templates/tutorials/navigation/navigation_using_navigationlinks.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_using_navigationmaps.pot b/sphinx/templates/tutorials/navigation/navigation_using_navigationmaps.pot index 9de1f5b871..603c1626ef 100644 --- a/sphinx/templates/tutorials/navigation/navigation_using_navigationmaps.pot +++ b/sphinx/templates/tutorials/navigation/navigation_using_navigationmaps.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_using_navigationmeshes.pot b/sphinx/templates/tutorials/navigation/navigation_using_navigationmeshes.pot index 19358b00c8..f135ad197e 100644 --- a/sphinx/templates/tutorials/navigation/navigation_using_navigationmeshes.pot +++ b/sphinx/templates/tutorials/navigation/navigation_using_navigationmeshes.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_using_navigationobstacles.pot b/sphinx/templates/tutorials/navigation/navigation_using_navigationobstacles.pot index fae712c714..9eb07cf81e 100644 --- a/sphinx/templates/tutorials/navigation/navigation_using_navigationobstacles.pot +++ b/sphinx/templates/tutorials/navigation/navigation_using_navigationobstacles.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_using_navigationpathqueryobjects.pot b/sphinx/templates/tutorials/navigation/navigation_using_navigationpathqueryobjects.pot index 6ca871ce94..3b1a07d1af 100644 --- a/sphinx/templates/tutorials/navigation/navigation_using_navigationpathqueryobjects.pot +++ b/sphinx/templates/tutorials/navigation/navigation_using_navigationpathqueryobjects.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_using_navigationpaths.pot b/sphinx/templates/tutorials/navigation/navigation_using_navigationpaths.pot index f9a6e3fb15..8a2e39be18 100644 --- a/sphinx/templates/tutorials/navigation/navigation_using_navigationpaths.pot +++ b/sphinx/templates/tutorials/navigation/navigation_using_navigationpaths.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_using_navigationregions.pot b/sphinx/templates/tutorials/navigation/navigation_using_navigationregions.pot index f5ed5ca8db..ad0f0a0ceb 100644 --- a/sphinx/templates/tutorials/navigation/navigation_using_navigationregions.pot +++ b/sphinx/templates/tutorials/navigation/navigation_using_navigationregions.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/navigation/navigation_using_navigationservers.pot b/sphinx/templates/tutorials/navigation/navigation_using_navigationservers.pot index 47183973da..e06baa5ae2 100644 --- a/sphinx/templates/tutorials/navigation/navigation_using_navigationservers.pot +++ b/sphinx/templates/tutorials/navigation/navigation_using_navigationservers.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/networking/high_level_multiplayer.pot b/sphinx/templates/tutorials/networking/high_level_multiplayer.pot index 76804e4044..529eef5838 100644 --- a/sphinx/templates/tutorials/networking/high_level_multiplayer.pot +++ b/sphinx/templates/tutorials/networking/high_level_multiplayer.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -88,7 +88,7 @@ msgid "This object extends from :ref:`PacketPeer `, so it inhe msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:60 -msgid "This class interface can abstract most types of network layers, topologies and libraries. By default, Godot provides an implementation based on ENet (:ref:`ENetMultiplayerPeer `), one based on WebRTC (:ref:`WebRTCMultiplayerPeer `), and one based on WebSocket (:ref:`WebSocketPeer `), but this could be used to implement mobile APIs (for ad hoc WiFi, Bluetooth) or custom device/console-specific networking APIs." +msgid "This class interface can abstract most types of network layers, topologies and libraries. By default, Godot provides an implementation based on ENet (:ref:`ENetMultiplayerPeer `), one based on WebRTC (:ref:`WebRTCMultiplayerPeer `), and one based on WebSocket (:ref:`WebSocketMultiplayerPeer `), but this could be used to implement mobile APIs (for ad hoc WiFi, Bluetooth) or custom device/console-specific networking APIs." msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:66 diff --git a/sphinx/templates/tutorials/networking/http_client_class.pot b/sphinx/templates/tutorials/networking/http_client_class.pot index 8296c7e689..5afb797bfc 100644 --- a/sphinx/templates/tutorials/networking/http_client_class.pot +++ b/sphinx/templates/tutorials/networking/http_client_class.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/networking/http_request_class.pot b/sphinx/templates/tutorials/networking/http_request_class.pot index bcae267eed..fa19300044 100644 --- a/sphinx/templates/tutorials/networking/http_request_class.pot +++ b/sphinx/templates/tutorials/networking/http_request_class.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/networking/index.pot b/sphinx/templates/tutorials/networking/index.pot index 424b35e54b..11e8ab0062 100644 --- a/sphinx/templates/tutorials/networking/index.pot +++ b/sphinx/templates/tutorials/networking/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/networking/ssl_certificates.pot b/sphinx/templates/tutorials/networking/ssl_certificates.pot index b91c23cc4d..2c0b58007a 100644 --- a/sphinx/templates/tutorials/networking/ssl_certificates.pot +++ b/sphinx/templates/tutorials/networking/ssl_certificates.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/networking/webrtc.pot b/sphinx/templates/tutorials/networking/webrtc.pot index 0b36bf8f88..68ca20653d 100644 --- a/sphinx/templates/tutorials/networking/webrtc.pot +++ b/sphinx/templates/tutorials/networking/webrtc.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/networking/websocket.pot b/sphinx/templates/tutorials/networking/websocket.pot index f02c593bed..9ae02b3aea 100644 --- a/sphinx/templates/tutorials/networking/websocket.pot +++ b/sphinx/templates/tutorials/networking/websocket.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/performance/cpu_optimization.pot b/sphinx/templates/tutorials/performance/cpu_optimization.pot index 853791aec6..84f36112e7 100644 --- a/sphinx/templates/tutorials/performance/cpu_optimization.pot +++ b/sphinx/templates/tutorials/performance/cpu_optimization.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/performance/general_optimization.pot b/sphinx/templates/tutorials/performance/general_optimization.pot index 6be5e5254a..b75be78fb7 100644 --- a/sphinx/templates/tutorials/performance/general_optimization.pot +++ b/sphinx/templates/tutorials/performance/general_optimization.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/performance/gpu_optimization.pot b/sphinx/templates/tutorials/performance/gpu_optimization.pot index 5936fe9ea7..21bd6be973 100644 --- a/sphinx/templates/tutorials/performance/gpu_optimization.pot +++ b/sphinx/templates/tutorials/performance/gpu_optimization.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/performance/index.pot b/sphinx/templates/tutorials/performance/index.pot index c64971ef65..0c4e52035d 100644 --- a/sphinx/templates/tutorials/performance/index.pot +++ b/sphinx/templates/tutorials/performance/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/performance/optimizing_3d_performance.pot b/sphinx/templates/tutorials/performance/optimizing_3d_performance.pot index fb6a6f1a86..462c64f0e5 100644 --- a/sphinx/templates/tutorials/performance/optimizing_3d_performance.pot +++ b/sphinx/templates/tutorials/performance/optimizing_3d_performance.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -44,7 +44,7 @@ msgid "Things aren't quite as bad as they seem, because the Z-buffer usually all msgstr "" #: ../../docs/tutorials/performance/optimizing_3d_performance.rst:34 -msgid "One way we can potentially reduce the amount to be rendered is to **take advantage of occlusion**. Godot 4.0 and later offers a new approach to occlusion culling using occluder nodes. See :ref:`doc_occlusion_culling` for instructions on setting up occlusion culling in your scene." +msgid "One way we can potentially reduce the amount to be rendered is to **take advantage of occlusion**. Godot offers an approach to occlusion culling using occluder nodes. See :ref:`doc_occlusion_culling` for instructions on setting up occlusion culling in your scene." msgstr "" #: ../../docs/tutorials/performance/optimizing_3d_performance.rst:41 diff --git a/sphinx/templates/tutorials/performance/pipeline_compilations.pot b/sphinx/templates/tutorials/performance/pipeline_compilations.pot index 45caea9c6b..f001b8261e 100644 --- a/sphinx/templates/tutorials/performance/pipeline_compilations.pot +++ b/sphinx/templates/tutorials/performance/pipeline_compilations.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/performance/thread_safe_apis.pot b/sphinx/templates/tutorials/performance/thread_safe_apis.pot index edf76b4301..7b534a24ef 100644 --- a/sphinx/templates/tutorials/performance/thread_safe_apis.pot +++ b/sphinx/templates/tutorials/performance/thread_safe_apis.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -15,82 +15,98 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:6 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:4 msgid "Thread-safe APIs" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:9 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:7 msgid "Threads" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:11 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:9 msgid "Threads are used to balance processing power across CPUs and cores. Godot supports multithreading, but not in the whole engine." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:14 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:12 msgid "Below is a list of ways multithreading can be used in different areas of Godot." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:17 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:15 msgid "Global scope" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:19 -msgid ":ref:`Global Scope` singletons are all thread-safe. Accessing servers from threads is supported (for RenderingServer and Physics servers, ensure threaded or thread-safe operation is enabled in the project settings!)." +#: ../../docs/tutorials/performance/thread_safe_apis.rst:17 +msgid "Most :ref:`Global Scope` singletons are thread-safe by default. Accessing servers from threads is supported. However, for the :ref:`rendering ` and :ref:`physics ` servers, thread-safe operation must be enabled in the project settings first." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:21 -msgid "This makes them ideal for code that creates dozens of thousands of instances in servers and controls them from threads. Of course, it requires a bit more code, as this is used directly and not within the scene tree." +#: ../../docs/tutorials/performance/thread_safe_apis.rst:23 +msgid "This makes singletons ideal for code that creates dozens of thousands of instances in servers and controls them from threads. Of course, it requires a bit more code, as this is used directly and not within the scene tree." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:24 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:28 msgid "Scene tree" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:26 -msgid "Interacting with the active scene tree is **NOT** thread-safe. Make sure to use mutexes when sending data between threads. If you want to call functions from a thread, the *call_deferred* function may be used:" +#: ../../docs/tutorials/performance/thread_safe_apis.rst:30 +msgid "Interacting with the active scene tree is **not** thread-safe. Make sure to use mutexes when sending data between threads. If you want to call functions or set properties from a thread, you may use :ref:`call_deferred ` or :ref:`set_deferred `:" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:43 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:50 msgid "However, creating scene chunks (nodes in tree arrangement) outside the active tree is fine. This way, parts of a scene can be built or instantiated in a thread, then added in the main thread:" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:60 -msgid "Still, this is only really useful if you have **one** thread loading data. Attempting to load or create scene chunks from multiple threads may work, but you risk resources (which are only loaded once in Godot) tweaked by the multiple threads, resulting in unexpected behaviors or crashes." +#: ../../docs/tutorials/performance/thread_safe_apis.rst:69 +msgid "Still, this is only really useful if you have **one** thread loading data. Attempting to load or create scene chunks from multiple threads may work, but you risk resources (which are only loaded once in Godot) being tweaked by the multiple threads, resulting in unexpected behaviors or crashes." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:65 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:74 msgid "Only use more than one thread to generate scene data if you *really* know what you are doing and you are sure that a single resource is not being used or set in multiple ones. Otherwise, you are safer just using the servers API (which is fully thread-safe) directly and not touching scene or resources." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:71 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:82 msgid "Rendering" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:73 -msgid "Instancing nodes that render anything in 2D or 3D (such as Sprite) is *not* thread-safe by default. To make rendering thread-safe, set the :ref:`Rendering > Driver > Thread Model` project setting to **Multi-Threaded**." +#: ../../docs/tutorials/performance/thread_safe_apis.rst:84 +msgid "Instancing nodes that render anything in 2D or 3D (such as :ref:`class_Sprite2D` or :ref:`class_MeshInstance3D`) is *not* thread-safe by default. To run the rendering driver on a separate thread, set the :ref:`Rendering > Driver > Thread Model ` project setting to **Separate**." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:78 -msgid "Note that the Multi-Threaded thread model has several known bugs, so it may not be usable in all scenarios." +#: ../../docs/tutorials/performance/thread_safe_apis.rst:90 +msgid "Note that the **Separate** thread model has several known bugs, so it may not be usable in all scenarios." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:81 -msgid "You should avoid calling functions involving direct interaction with the GPU on other threads, such as creating new textures or modifying and retrieving image data, these operations can lead to performance stalls because they require synchronization with the :ref:`RenderingServer`, as data needs to be transmitted to or updated on the GPU." +#: ../../docs/tutorials/performance/thread_safe_apis.rst:95 +msgid "You should avoid calling functions involving direct interaction with the GPU on other threads, such as creating new textures or modifying and retrieving image data. These operations can lead to performance stalls because they require synchronization with the :ref:`RenderingServer`, as data needs to be transmitted to or updated on the GPU." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:86 -msgid "GDScript arrays, dictionaries" +#: ../../docs/tutorials/performance/thread_safe_apis.rst:104 +msgid "Physics" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:88 -msgid "In GDScript, reading and writing elements from multiple threads is OK, but anything that changes the container size (resizing, adding or removing elements) requires locking a mutex." +#: ../../docs/tutorials/performance/thread_safe_apis.rst:106 +msgid "Physics simulation is *not* thread-safe by default. To run the physics servers on separate threads (making them thread-safe), enable the following project settings:" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:91 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:109 +msgid "**PhysicsServer2D:** :ref:`Physics > 2D > Run on Separate Thread `." +msgstr "" + +#: ../../docs/tutorials/performance/thread_safe_apis.rst:110 +msgid "**PhysicsServer3D:** :ref:`Physics > 3D > Run on Separate Thread `." +msgstr "" + +#: ../../docs/tutorials/performance/thread_safe_apis.rst:113 +msgid "GDScript arrays and dictionaries" +msgstr "" + +#: ../../docs/tutorials/performance/thread_safe_apis.rst:115 +msgid "In GDScript, reading and writing elements from multiple threads is OK, but anything that changes the container size (resizing, adding, or removing elements) requires locking a :ref:`mutex `." +msgstr "" + +#: ../../docs/tutorials/performance/thread_safe_apis.rst:120 msgid "Resources" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:93 -msgid "Modifying a unique resource from multiple threads is not supported. However handling references on multiple threads is supported, hence loading resources on a thread is as well - scenes, textures, meshes, etc - can be loaded and manipulated on a thread and then added to the active scene on the main thread. The limitation here is as described above, one must be careful not to load the same resource from multiple threads at once, therefore it is easiest to use **one** thread for loading and modifying resources, and then the main thread for adding them." +#: ../../docs/tutorials/performance/thread_safe_apis.rst:122 +msgid "Modifying a unique resource from multiple threads is not supported. However, handling references on multiple threads *is* supported. Hence loading resources on a thread is as well - scenes, textures, meshes, etc - can be loaded and manipulated on a thread and then added to the active scene on the main thread. The limitation here is as described above: one must be careful not to load the same resource from multiple threads at once. Therefore, it's easiest to use **one** thread for loading and modifying resources, and then the main thread for adding them." msgstr "" diff --git a/sphinx/templates/tutorials/performance/using_multimesh.pot b/sphinx/templates/tutorials/performance/using_multimesh.pot index cb30807a50..b1bc9ef8dd 100644 --- a/sphinx/templates/tutorials/performance/using_multimesh.pot +++ b/sphinx/templates/tutorials/performance/using_multimesh.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/performance/using_multiple_threads.pot b/sphinx/templates/tutorials/performance/using_multiple_threads.pot index 5fb5a88baa..1d6bd1cf95 100644 --- a/sphinx/templates/tutorials/performance/using_multiple_threads.pot +++ b/sphinx/templates/tutorials/performance/using_multiple_threads.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -19,78 +19,82 @@ msgstr "" msgid "Using multiple threads" msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:7 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:8 +msgid "For a list of multithreading primitives in C++, see :ref:`doc_core_concurrency_types`." +msgstr "" + +#: ../../docs/tutorials/performance/using_multiple_threads.rst:11 msgid "Threads" msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:9 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:13 msgid "Threads allow simultaneous execution of code. It allows off-loading work from the main thread." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:12 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:16 msgid "Godot supports threads and provides many handy functions to use them." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:14 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:18 msgid "If using other languages (C#, C++), it may be easier to use the threading classes they support." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:19 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:23 msgid "Before using a built-in class in a thread, read :ref:`doc_thread_safe_apis` first to check whether it can be safely used in a thread." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:23 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:27 msgid "Creating a Thread" msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:25 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:29 msgid "To create a thread, use the following code:" msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:134 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:138 msgid "Your function will, then, run in a separate thread until it returns. Even if the function has returned already, the thread must collect it, so call :ref:`Thread.wait_to_finish()`, which will wait until the thread is done (if not done yet), then properly dispose of it." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:141 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:145 msgid "Creating threads is a slow operation, especially on Windows. To avoid unnecessary performance overhead, make sure to create threads before heavy processing is needed instead of creating threads just-in-time." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:145 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:149 msgid "For example, if you need multiple threads during gameplay, you can create threads while the level is loading and only actually start processing with them later on." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:149 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:153 msgid "Additionally, locking and unlocking of mutexes can also be an expensive operation. Locking should be done carefully; avoid locking too often (or for too long)." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:154 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:160 msgid "Mutexes" msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:156 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:162 msgid "Accessing objects or data from multiple threads is not always supported (if you do it, it will cause unexpected behaviors or crashes). Read the :ref:`doc_thread_safe_apis` documentation to understand which engine APIs support multiple thread access." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:161 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:167 msgid "When processing your own data or calling your own functions, as a rule, try to avoid accessing the same data directly from different threads. You may run into synchronization problems, as the data is not always updated between CPU cores when modified. Always use a :ref:`Mutex` when accessing a piece of data from different threads." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:167 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:173 msgid "When calling :ref:`Mutex.lock()`, a thread ensures that all other threads will be blocked (put on suspended state) if they try to *lock* the same mutex. When the mutex is unlocked by calling :ref:`Mutex.unlock()`, the other threads will be allowed to proceed with the lock (but only one at a time)." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:173 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:179 msgid "Here is an example of using a Mutex:" msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:298 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:304 msgid "Semaphores" msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:300 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:306 msgid "Sometimes you want your thread to work *\"on demand\"*. In other words, tell it when to work and let it suspend when it isn't doing anything. For this, :ref:`Semaphores` are used. The function :ref:`Semaphore.wait()` is used in the thread to suspend it until some data arrives." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:306 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:312 msgid "The main thread, instead, uses :ref:`Semaphore.post()` to signal that data is ready to be processed:" msgstr "" diff --git a/sphinx/templates/tutorials/performance/using_servers.pot b/sphinx/templates/tutorials/performance/using_servers.pot index 20f9436f03..d99de07649 100644 --- a/sphinx/templates/tutorials/performance/using_servers.pot +++ b/sphinx/templates/tutorials/performance/using_servers.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -151,42 +151,46 @@ msgstr "" msgid "This is an example of how to create a sprite from code and move it using the low-level :ref:`CanvasItem ` API." msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:146 +#: ../../docs/tutorials/performance/using_servers.rst:98 +msgid "When creating canvas items using the RenderingServer, you should reset physics interpolation on the first frame using :ref:`RenderingServer.canvas_item_reset_physics_interpolation() `. This ensures proper synchronization between the rendering and physics systems." +msgstr "" + +#: ../../docs/tutorials/performance/using_servers.rst:151 msgid "The Canvas Item API in the server allows you to add draw primitives to it. Once added, they can't be modified. The Item needs to be cleared and the primitives re-added (this is not the case for setting the transform, which can be done as many times as desired)." msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:150 +#: ../../docs/tutorials/performance/using_servers.rst:155 msgid "Primitives are cleared this way:" msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:163 +#: ../../docs/tutorials/performance/using_servers.rst:168 msgid "Instantiating a Mesh into 3D space" msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:165 +#: ../../docs/tutorials/performance/using_servers.rst:170 msgid "The 3D APIs are different from the 2D ones, so the instantiation API must be used." msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:218 +#: ../../docs/tutorials/performance/using_servers.rst:223 msgid "Creating a 2D RigidBody and moving a sprite with it" msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:220 +#: ../../docs/tutorials/performance/using_servers.rst:225 msgid "This creates a :ref:`RigidBody2D ` using the :ref:`PhysicsServer2D ` API, and moves a :ref:`CanvasItem ` when the body moves." msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:290 +#: ../../docs/tutorials/performance/using_servers.rst:295 msgid "The 3D version should be very similar, as 2D and 3D physics servers are identical (using :ref:`RigidBody3D ` and :ref:`PhysicsServer3D ` respectively)." msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:294 +#: ../../docs/tutorials/performance/using_servers.rst:299 msgid "Getting data from the servers" msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:296 +#: ../../docs/tutorials/performance/using_servers.rst:301 msgid "Try to **never** request any information from ``RenderingServer``, ``PhysicsServer2D`` or ``PhysicsServer3D`` by calling functions unless you know what you are doing. These servers will often run asynchronously for performance and calling any function that returns a value will stall them and force them to process anything pending until the function is actually called. This will severely decrease performance if you call them every frame (and it won't be obvious why)." msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:302 +#: ../../docs/tutorials/performance/using_servers.rst:307 msgid "Because of this, most APIs in such servers are designed so it's not even possible to request information back, until it's actual data that can be saved." msgstr "" diff --git a/sphinx/templates/tutorials/performance/vertex_animation/animating_thousands_of_fish.pot b/sphinx/templates/tutorials/performance/vertex_animation/animating_thousands_of_fish.pot index 7907890aee..e0b86be90e 100644 --- a/sphinx/templates/tutorials/performance/vertex_animation/animating_thousands_of_fish.pot +++ b/sphinx/templates/tutorials/performance/vertex_animation/animating_thousands_of_fish.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/performance/vertex_animation/controlling_thousands_of_fish.pot b/sphinx/templates/tutorials/performance/vertex_animation/controlling_thousands_of_fish.pot index 583d1efe7b..599192cf23 100644 --- a/sphinx/templates/tutorials/performance/vertex_animation/controlling_thousands_of_fish.pot +++ b/sphinx/templates/tutorials/performance/vertex_animation/controlling_thousands_of_fish.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/performance/vertex_animation/index.pot b/sphinx/templates/tutorials/performance/vertex_animation/index.pot index a8dce2920b..586401c61c 100644 --- a/sphinx/templates/tutorials/performance/vertex_animation/index.pot +++ b/sphinx/templates/tutorials/performance/vertex_animation/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/collision_shapes_2d.pot b/sphinx/templates/tutorials/physics/collision_shapes_2d.pot index 8b9b08389d..382c3af724 100644 --- a/sphinx/templates/tutorials/physics/collision_shapes_2d.pot +++ b/sphinx/templates/tutorials/physics/collision_shapes_2d.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/collision_shapes_3d.pot b/sphinx/templates/tutorials/physics/collision_shapes_3d.pot index b885d361ce..3d6940edda 100644 --- a/sphinx/templates/tutorials/physics/collision_shapes_3d.pot +++ b/sphinx/templates/tutorials/physics/collision_shapes_3d.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/index.pot b/sphinx/templates/tutorials/physics/index.pot index b53711b90d..734266f6dc 100644 --- a/sphinx/templates/tutorials/physics/index.pot +++ b/sphinx/templates/tutorials/physics/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/interpolation/2d_and_3d_physics_interpolation.pot b/sphinx/templates/tutorials/physics/interpolation/2d_and_3d_physics_interpolation.pot index 6c270b07c1..f3ebb92d86 100644 --- a/sphinx/templates/tutorials/physics/interpolation/2d_and_3d_physics_interpolation.pot +++ b/sphinx/templates/tutorials/physics/interpolation/2d_and_3d_physics_interpolation.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/interpolation/advanced_physics_interpolation.pot b/sphinx/templates/tutorials/physics/interpolation/advanced_physics_interpolation.pot index c7f89120ba..fb38228e62 100644 --- a/sphinx/templates/tutorials/physics/interpolation/advanced_physics_interpolation.pot +++ b/sphinx/templates/tutorials/physics/interpolation/advanced_physics_interpolation.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/interpolation/index.pot b/sphinx/templates/tutorials/physics/interpolation/index.pot index 3e2b7a42e9..19d2581e54 100644 --- a/sphinx/templates/tutorials/physics/interpolation/index.pot +++ b/sphinx/templates/tutorials/physics/interpolation/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/interpolation/physics_interpolation_introduction.pot b/sphinx/templates/tutorials/physics/interpolation/physics_interpolation_introduction.pot index d6f9981edd..fb19ec33b8 100644 --- a/sphinx/templates/tutorials/physics/interpolation/physics_interpolation_introduction.pot +++ b/sphinx/templates/tutorials/physics/interpolation/physics_interpolation_introduction.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/interpolation/physics_interpolation_quick_start_guide.pot b/sphinx/templates/tutorials/physics/interpolation/physics_interpolation_quick_start_guide.pot index 8df7186795..7599ccd674 100644 --- a/sphinx/templates/tutorials/physics/interpolation/physics_interpolation_quick_start_guide.pot +++ b/sphinx/templates/tutorials/physics/interpolation/physics_interpolation_quick_start_guide.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/interpolation/using_physics_interpolation.pot b/sphinx/templates/tutorials/physics/interpolation/using_physics_interpolation.pot index ebde0aede6..99e5bd9bd8 100644 --- a/sphinx/templates/tutorials/physics/interpolation/using_physics_interpolation.pot +++ b/sphinx/templates/tutorials/physics/interpolation/using_physics_interpolation.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/kinematic_character_2d.pot b/sphinx/templates/tutorials/physics/kinematic_character_2d.pot index 92a763545e..394258b5a8 100644 --- a/sphinx/templates/tutorials/physics/kinematic_character_2d.pot +++ b/sphinx/templates/tutorials/physics/kinematic_character_2d.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/large_world_coordinates.pot b/sphinx/templates/tutorials/physics/large_world_coordinates.pot index 57fd89f6c5..9f0f55f91b 100644 --- a/sphinx/templates/tutorials/physics/large_world_coordinates.pot +++ b/sphinx/templates/tutorials/physics/large_world_coordinates.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/physics_introduction.pot b/sphinx/templates/tutorials/physics/physics_introduction.pot index b4b3bedb70..3a00068647 100644 --- a/sphinx/templates/tutorials/physics/physics_introduction.pot +++ b/sphinx/templates/tutorials/physics/physics_introduction.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/ragdoll_system.pot b/sphinx/templates/tutorials/physics/ragdoll_system.pot index dc1ad8b7b2..e858ba4619 100644 --- a/sphinx/templates/tutorials/physics/ragdoll_system.pot +++ b/sphinx/templates/tutorials/physics/ragdoll_system.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -24,101 +24,263 @@ msgid "Introduction" msgstr "" #: ../../docs/tutorials/physics/ragdoll_system.rst:9 -msgid "Since version 3.1, Godot supports ragdoll physics. Ragdolls rely on physics simulation to create realistic procedural animation. They are used for death animations in many games." +msgid "Godot supports ragdoll physics. Ragdolls rely on physics simulation to create realistic procedural animation. They are used for death animations in many games." msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:11 -msgid "In this tutorial, we will be using the Platformer3D demo to set up a ragdoll." -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:13 -msgid "You can download the Platformer3D demo on `GitHub `_ or using the `Asset Library `_." +#: ../../docs/tutorials/physics/ragdoll_system.rst:12 +msgid "In this tutorial, we will be using the Platformer 3D demo to set up a ragdoll." msgstr "" #: ../../docs/tutorials/physics/ragdoll_system.rst:16 +msgid "You can download the Platformer 3D demo on `GitHub `_ or using the `Asset Library `_." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:20 +msgid "You can also check out an example of a complete ragdoll setup in the `Ragdoll Physics demo `_." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:24 msgid "Setting up the ragdoll" msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:19 +#: ../../docs/tutorials/physics/ragdoll_system.rst:27 msgid "Creating physical bones" msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:21 -msgid "Like many other features in the engine, there is a node to set up a ragdoll: the :ref:`PhysicalBone3D ` node. To simplify the setup, you can generate ``PhysicalBone`` nodes with the \"Create physical skeleton\" feature in the skeleton node." +#: ../../docs/tutorials/physics/ragdoll_system.rst:29 +msgid "Like many other features in the engine, there are two nodes which are used to set up a ragdoll:" msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:23 -msgid "Open the platformer demo in Godot, and then the Robi scene. Select the ``Skeleton`` node. A skeleton button appears on the top bar menu:" +#: ../../docs/tutorials/physics/ragdoll_system.rst:32 +msgid "A :ref:`PhysicalBoneSimulator3D ` node. This node is the parent of all physical bones and is responsible for controlling the simulation." msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:27 -msgid "Click it and select the ``Create physical skeleton`` option. Godot will generate ``PhysicalBone`` nodes and collision shapes for each bone in the skeleton and pin joints to connect them together:" -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:31 -msgid "Some of the generated bones aren't necessary: the ``MASTER`` bone for example. So we're going to clean up the skeleton by removing them." -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:34 -msgid "Cleaning up the skeleton" -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:36 -msgid "Each ``PhysicalBone`` the engine needs to simulate has a performance cost, so you want to remove every bone that is too small to make a difference in the simulation, as well as all utility bones." +#: ../../docs/tutorials/physics/ragdoll_system.rst:35 +msgid "One or more :ref:`PhysicalBone3D ` children. Each node represents a single bone in the ragdoll." msgstr "" #: ../../docs/tutorials/physics/ragdoll_system.rst:38 -msgid "For example, if we take a humanoid, you do not want to have physical bones for each finger. You can use a single bone for the entire hand instead, or one for the palm, one for the thumb, and a last one for the other four fingers." +msgid "Open the platformer demo in Godot, and then the ``player/player.tscn`` scene. Select the ``Skeleton3D`` node. A skeleton button appears at the top of the 3D editor viewport:" msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:40 -msgid "Remove these physical bones: ``MASTER``, ``waist``, ``neck``, ``headtracker``. This gives us an optimized skeleton and makes it easier to control the ragdoll." +#: ../../docs/tutorials/physics/ragdoll_system.rst:42 +#: ../../docs/tutorials/physics/ragdoll_system.rst:46 +msgid "Creating a physical skeleton in the editor" msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:43 -msgid "Collision shape adjustment" -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:45 -msgid "The next task is adjusting the collision shape and the size of physical bones to match the part of the body that each bone should simulate." -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:50 -msgid "Joints adjustment" +#: ../../docs/tutorials/physics/ragdoll_system.rst:48 +msgid "Click it and select the :menu:`Create Physical Skeleton` option. Godot will generate PhysicalBone3D nodes and collision shapes for each bone in the skeleton and pin joints to connect them together:" msgstr "" #: ../../docs/tutorials/physics/ragdoll_system.rst:52 -msgid "Once you adjusted the collision shapes, your ragdoll is almost ready. You just want to adjust the pin joints to get a better simulation. ``PhysicalBone`` nodes have an unconstrained pin joint assigned to them by default. To change the pin joint, select the ``PhysicalBone`` and change the constraint type in the ``Joint`` section. There, you can change the constraint's orientation and its limits." -msgstr "" - #: ../../docs/tutorials/physics/ragdoll_system.rst:56 -msgid "This is the final result:" +msgid "Scene tree of the player scene after creating a physical skeleton" msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:61 -msgid "Simulating the ragdoll" +#: ../../docs/tutorials/physics/ragdoll_system.rst:58 +msgid "Some of the generated bones aren't necessary, such as the ``MASTER`` bone in this scene. We're going to clean up the skeleton by removing them." msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:63 -msgid "The ragdoll is now ready to use. To start the simulation and play the ragdoll animation, you need to call the ``physical_bones_start_simulation`` method. Attach a script to the skeleton node and call the method in the ``_ready`` method:" +#: ../../docs/tutorials/physics/ragdoll_system.rst:62 +msgid "Clean up and optimize the skeleton" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:64 +msgid "For each PhysicalBone3D the engine needs to simulate, there is a performance cost. You'll want to remove every bone that is too small to make a difference in the simulation, as well as all utility bones." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:68 +msgid "For example, if we take a humanoid, you don't need to have physical bones for each finger. You can use a single bone for the entire hand instead, or one for the palm, one for the thumb, and a last one for the other four fingers." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:72 +msgid "Remove these PhysicalBone3D nodes: ``MASTER``, ``waist``, ``neck``, ``headtracker``. This gives us an optimized skeleton and makes it easier to control the ragdoll." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:76 +msgid "Adjust joints and constraints" msgstr "" #: ../../docs/tutorials/physics/ragdoll_system.rst:78 -msgid "To stop the simulation, call the ``physical_bones_stop_simulation()`` method." +msgid "Once you adjusted the collision shapes, your ragdoll is almost ready. Now, you need to adjust the pin joints to get a better simulation. PhysicalBone3D nodes have an unconstrained pin joint assigned to them by default. To change the pin joint, select a PhysicalBone3D node and change the constraint type in the :menu:`Joint` section of the inspector. There, you can change the constraint's orientation and its limits." msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:82 -msgid "You can also limit the simulation to only a few bones. To do so, pass the bone names as a parameter. Here's an example of partial ragdoll simulation:" +#: ../../docs/tutorials/physics/ragdoll_system.rst:84 +msgid "Joints have a gizmo visible in the 3D editor as well, so you can see their constraints in action." msgstr "" #: ../../docs/tutorials/physics/ragdoll_system.rst:87 +#: ../../docs/tutorials/physics/ragdoll_system.rst:91 +msgid "Adjusting joints in the inspector after selecting a PhysicalBone3D node" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:95 +msgid "To get a better view when editing joints and collision shapes, you can do the following:" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:97 +msgid "Hide PhysicalBone3D nodes you aren't currently working on, so you can focus on the ones you're adjusting." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:99 +msgid "Hide the MeshInstance3D of the character by clicking the eye icon next to it in the scene tree dock." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:101 +msgid "Hide the Skeleton3D gizmos, so that the orange triangles that represent the skeleton don't clutter the viewport while leaving the rest visible. To do so, click :menu:`View > Gizmos > Skeleton3D` at the top of the 3D editor viewport until the eye icon appears closed." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:105 +msgid "Disable the preview environment by clicking the globe icon at the top of the 3D editor viewport." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:107 +msgid "Set the **Default Clear Color** project setting to pure black in the Project Settings. This is only effective if the preview environment is disabled." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:109 +msgid "Change the debug draw mode using the :menu:`Perspective` button in the top-left corner of the 3D editor viewport. The :menu:`Display Wireframe` and :menu:`Display Overdraw` options are particularly useful when adjusting collision shapes, as they allow you to see through the original mesh." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:113 +msgid "Use the orthographic camera by clicking the :button:`X`/:button:`Y`/:button:`Z` buttons in the top-right corner of the 3D editor viewport." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:116 +msgid "Here is the list of joints available:" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:118 +msgid "**None:** Does not perform any constraint." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:119 +msgid "**ConeJoint:** Ball-and-socket. Useful for shoulders, hips, neck." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:120 +msgid "**HingeJoint:** Provides an angular constraint; think of it like a door hinge. Useful for elbows and knees." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:122 +msgid "**PinJoint:** Keeps two bodies connected *(default)*. Leads to \"crumpling\" of the bones, so it's recommended to use other joint types for most characters instead." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:125 +msgid "**SliderJoint:** Slides one bone along another on a specific axis." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:126 +msgid "**6DOFJoint:** Most powerful joint, offering both linear and angular constraints, but also the most complex to configure." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:129 +msgid "If in doubt, start with HingeJoint and ConeJoint, as they cover most use cases:" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:131 +msgid "For HingeJoint, make sure to enable **Angular Limit** in the :menu:`Joint Constraints` section of the inspector. After enabling it, you can see the angle that it's being constrained to in the viewport. You can rotate the PhysicalBone3D to change the axis where the joint is constrained, then adjust the angles." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:136 +msgid "For ConeJoint, it's usually best to limit **Swing Span** between 20 and 90 degrees, and the **Twist Span** between 20 and 45 degrees." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:140 +msgid "Adjust collision shapes" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:142 +msgid "The next task is adjusting the collision shape and the size of the physical bones to match the part of the body that each bone should simulate." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:145 +msgid "It's recommended to adjust collision shapes *after* adjusting joints and constraints, as rotating a joint will also rotate the collision shape. To avoid having to adjust collision shapes twice, it's better to adjust joints first." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:149 +msgid "Note that it's possible to have multiple collision shapes as a child of a PhysicalBone3D node. This can be useful to represent particularly complex shapes of limbs that are otherwise rigid." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:155 +msgid "To pause animation playback while adjusting the ragdoll, select the ``AnimationTree`` node and disable the **Active** property in the Inspector. Remember to enable it again when you're done, as it controls animation playback during gameplay." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:160 +#: ../../docs/tutorials/physics/ragdoll_system.rst:164 +msgid "Adjusting collision shapes in the 3D editor" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:166 +msgid "This is the final result:" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:168 +#: ../../docs/tutorials/physics/ragdoll_system.rst:172 +msgid "Result after adjusting joints and collision shapes (player mesh is hidden for visibility)" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:175 +msgid "Simulate the ragdoll" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:177 +msgid "The ragdoll is now ready to use. To start the simulation and play the ragdoll animation, you need to call the :ref:`PhysicalBoneSimulator3D.physical_bones_start_simulation() ` method. Attach a script to the :ref:`PhysicalBoneSimulator3D ` node that is the parent of all the PhysicalBone3D nodes in our scene, then call it in the script's ``_ready`` method:" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:197 +msgid "To stop the simulation, call the :ref:`PhysicalBoneSimulator3D.physical_bones_stop_simulation() ` method." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:209 +msgid "You can also limit the simulation to only a few bones. This can be useful to create effects such as ragdoll limbs or attachments that can interact with the world. To do so, pass the bone names (*not* the PhysicalBone3D node names) as a parameter. To see the bone name, look at the **Bone Name** property in the inspector after selecting a PhysicalBone3D node." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:217 +msgid "When using an automatically generated physical skeleton as shown in this tutorial, the bone name is also contained in the node name. For example, in ``Physical Bone l-arm``, ``l-arm`` is the bone name." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:234 +msgid "Note that nonexistent bone names will not print any error or warning. If nothing happens when starting the simulation (or if the whole body is ragdolled instead of only specific bones), double-check the list of provided bones." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:238 +msgid "Here's an example of partial ragdoll simulation:" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:250 +msgid "To control how strongly the partial ragdoll simulation affects the overall animation, you can adjust the **Influence** property in the :ref:`PhysicalBoneSimulator3D ` node that is the parent of all PhysicalBone3D nodes. By default, it's set to ``1.0``, which means the ragdoll simulation fully overrides the rest of the animation." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:257 msgid "Collision layer and mask" msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:89 -msgid "Make sure to set up your collision layers and masks properly so the ``CharacterBody3D``'s capsule doesn't get in the way of the physics simulation:" +#: ../../docs/tutorials/physics/ragdoll_system.rst:259 +msgid "Make sure to set up your collision layers and masks properly so the CharacterBody3D's capsule doesn't get in the way of the physics simulation. Remember to adjust the collision layer and mask in the coin scene as well, so that the player can still collect coins:" msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:93 -msgid "For more information, read :ref:`doc_physics_introduction_collision_layers_and_masks`." +#: ../../docs/tutorials/physics/ragdoll_system.rst:264 +#: ../../docs/tutorials/physics/ragdoll_system.rst:268 +msgid "Layers and masks must be adjusted to these values in the inspector for each node" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:270 +msgid "You can find the GridMap in the 3D platformer demo in ``stage/grid_map.scn``. The coin's Area3D node (on which the layers and masks must be adjusted) can be found at ``coin/coin.tscn``." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:276 +msgid "To select all PhysicalBone3D nodes quickly, enter ``t:PhysicalBone3D`` in the search bar at the top of the scene tree dock. This filters the scene tree to only show PhysicalBone3D nodes, which allows you to select them all at once using :kbd:`Shift + Left mouse button` on the first and last entries." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:281 +msgid "If this is not done, collision will behave incorrectly as the player will collide with its own (inactive) ragdoll. This can cause the player to wildly bounce around or get stuck." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:285 +msgid "Like RigidBody3D, PhysicalBone3D supports collision exceptions through code using the :ref:`physical_bones_add_collision_exception() ` and :ref:`physical_bones_remove_collision_exception() ` methods. This can be used to prevent collisions with a specific object without relying on layers and masks." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:293 +msgid "For more information, see :ref:`doc_physics_introduction_collision_layers_and_masks`." msgstr "" diff --git a/sphinx/templates/tutorials/physics/ray-casting.pot b/sphinx/templates/tutorials/physics/ray-casting.pot index 4e5715d99f..05edb4e585 100644 --- a/sphinx/templates/tutorials/physics/ray-casting.pot +++ b/sphinx/templates/tutorials/physics/ray-casting.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/rigid_body.pot b/sphinx/templates/tutorials/physics/rigid_body.pot index 64dc06ae4c..7262be4189 100644 --- a/sphinx/templates/tutorials/physics/rigid_body.pot +++ b/sphinx/templates/tutorials/physics/rigid_body.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/soft_body.pot b/sphinx/templates/tutorials/physics/soft_body.pot index ae07676a7c..493b5820cd 100644 --- a/sphinx/templates/tutorials/physics/soft_body.pot +++ b/sphinx/templates/tutorials/physics/soft_body.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -15,110 +15,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../docs/tutorials/physics/soft_body.rst:6 +#: ../../docs/tutorials/physics/soft_body.rst:4 msgid "Using SoftBody3D" msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:8 -msgid "Soft bodies (or *soft-body dynamics*) simulate movement, changing shape and other physical properties of deformable objects. This can for example be used to simulate cloth or to create more realistic characters." +#: ../../docs/tutorials/physics/soft_body.rst:6 +msgid "Soft bodies (or *soft-body dynamics*) simulate movement, changing shape and other physical properties of deformable objects. For example, this can be used to simulate cloth or to create more realistic characters." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:12 -msgid "Basic set-up" +#: ../../docs/tutorials/physics/soft_body.rst:11 +msgid "Physics engine considerations" msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:14 -msgid "A :ref:`SoftBody3D ` node is used for soft body simulations." -msgstr "" - -#: ../../docs/tutorials/physics/soft_body.rst:16 -msgid "We will create a bouncy cube to demonstrate the setup of a soft body." +#: ../../docs/tutorials/physics/soft_body.rst:13 +msgid "Support for soft bodies is generally more robust in Jolt Physics compared to GodotPhysics3D. You can switch physics engines by changing **Physics > 3D > Physics Engine** in the Project Settings. Projects created in Godot 4.6 and later use Jolt Physics by default, but existing projects will have to be switched over manually." msgstr "" #: ../../docs/tutorials/physics/soft_body.rst:18 -msgid "Create a new scene with a ``Node3D`` node as root. Then, create a ``SoftBody3D`` node. Add a ``CubeMesh`` in the ``mesh`` property of the node in the inspector and increase the subdivision of the mesh for simulation." +msgid "Additionally, :ref:`physics interpolation ` currently does not affect soft bodies. If you want soft body simulation to look smoother at higher framerates, you'll have to increase the **Physics > Common > Physics Ticks per Second** project setting, which comes at a performance cost." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:22 -msgid "Set the parameters to obtain the type of soft body you aim for. Try to keep the ``Simulation Precision`` above 5, otherwise, the soft body may collapse." +#: ../../docs/tutorials/physics/soft_body.rst:24 +msgid "Basic setup" msgstr "" #: ../../docs/tutorials/physics/soft_body.rst:26 -msgid "Handle some parameters with care, as some value can lead to strange results. For example, if the shape is not completely closed and you set pressure to more than 0, the softbody will fly around like a plastic bag under strong wind." +msgid "A :ref:`SoftBody3D ` node is used for soft body simulations. Unlike other physics body nodes like :ref:`RigidBody3D ` or :ref:`StaticBody3D `, it does **not** have a :ref:`CollisionShape3D ` or a :ref:`MeshInstance3D ` child node. Instead, the collision shape is derived from the mesh assigned to the node. This mesh is also directly used for rendering, which means you don't need to create any child nodes for a functional, visible setup." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:28 -msgid "Play the scene to view the simulation." +#: ../../docs/tutorials/physics/soft_body.rst:34 +msgid "We will create a bouncy cube to demonstrate the setup of a soft body." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:30 -msgid "To improve the simulation's result, increase the ``Simulation Precision``, this will give significant improvement at the cost of performance." +#: ../../docs/tutorials/physics/soft_body.rst:36 +msgid "Create a new scene with a Node3D node as root. Then, create a SoftBody3D node. Add a BoxMesh in the **Mesh** property of the node in the inspector and increase the subdivision of the mesh for simulation." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:33 -msgid "Cloak simulation" +#: ../../docs/tutorials/physics/soft_body.rst:40 +msgid "The subdivision level determines the precision level of the deformation, with higher values allowing for smaller and more detailed deformations, at the cost of performance. In this example, we'll set it to 3 on each axis:" msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:35 -msgid "Let's make a cloak in the Platformer3D demo." +#: ../../docs/tutorials/physics/soft_body.rst:44 +#: ../../docs/tutorials/physics/soft_body.rst:48 +msgid "Adjusting BoxMesh properties in the inspector" msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:37 -msgid "You can download the Platformer3D demo on `GitHub `_ or `the Asset Library `_." +#: ../../docs/tutorials/physics/soft_body.rst:50 +msgid "Now, set the parameters to obtain the type of soft body you aim for. Try to keep the **Simulation Precision** above 5; otherwise, the soft body may collapse." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:39 -msgid "Open the ``Player`` scene, add a ``SoftBody3D`` node and assign a ``PlaneMesh`` to it." +#: ../../docs/tutorials/physics/soft_body.rst:54 +#: ../../docs/tutorials/physics/soft_body.rst:58 +msgid "Adjusting SoftBody3D simulation properties in the inspector" msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:41 -msgid "Open the ``PlaneMesh`` properties and set the size(x: 0.5 y: 1) then set ``Subdivide Width`` and ``Subdivide Depth`` to 5. Adjust the ``SoftBody3D``'s position. You should end up with something like this:" +#: ../../docs/tutorials/physics/soft_body.rst:62 +msgid "Handle some parameters with care, as some values can lead to strange results. For example, if the shape is not completely closed and you set pressure to a value greater than ``0.0``, the soft body will fly around like a plastic bag under strong wind." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:45 -msgid "Subdivision generates a more tessellated mesh for better simulations." +#: ../../docs/tutorials/physics/soft_body.rst:67 +msgid "Run the scene to view the simulation. Here's an example of what it should look like:" msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:47 -msgid "Add a :ref:`BoneAttachment3D ` node under the skeleton node and select the Neck bone to attach the cloak to the character skeleton." +#: ../../docs/tutorials/physics/soft_body.rst:79 +msgid "To improve the simulation's result, increase the **Simulation Precision**. This can give a significant improvement at the cost of performance." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:49 -msgid "``BoneAttachment3D`` node is to attach objects to a bone of an armature. The attached object will follow the bone's movement, weapon of a character can be attached this way." -msgstr "" - -#: ../../docs/tutorials/physics/soft_body.rst:53 -msgid "To create pinned joints, select the upper vertices in the ``SoftBody3D`` node:" -msgstr "" - -#: ../../docs/tutorials/physics/soft_body.rst:57 -msgid "The pinned joints can be found in ``SoftBody3D``'s ``Attachments`` property, choose the ``BoneAttachment`` as the ``SpatialAttachment`` for each pinned joints, the pinned joints are now attached to the neck." -msgstr "" - -#: ../../docs/tutorials/physics/soft_body.rst:61 -msgid "Last step is to avoid clipping by adding the Kinematic Body `Player` to ``Parent Collision Ignore`` of the ``SoftBody3D``." -msgstr "" - -#: ../../docs/tutorials/physics/soft_body.rst:65 -msgid "Play the scene and the cloak should simulate correctly." -msgstr "" - -#: ../../docs/tutorials/physics/soft_body.rst:69 -msgid "This covers the basic settings of softbody, experiment with the parameters to achieve the effect you are aiming for when making your game." -msgstr "" - -#: ../../docs/tutorials/physics/soft_body.rst:72 -msgid "Using Imported Meshes" -msgstr "" - -#: ../../docs/tutorials/physics/soft_body.rst:74 -msgid "The **Save to File** option in the Advanced Import Settings dialog allows you to save a mesh to a standalone resource file that you can then attach to ``SoftBody3D`` nodes." -msgstr "" - -#: ../../docs/tutorials/physics/soft_body.rst:78 -msgid "You may also want to disable LOD generation or change the LOD generation options when importing a mesh for use with ``SoftBody3D``. The default import settings will produce an LOD that merges adjacent faces that are nearly flat with respect to each other, even at very close render distances. This works well for static meshes, but is often undesirable for use with ``SoftBody3D`` if you want these faces to be able to bend and move with respect to each other, instead of being rendered as a single plane." +#: ../../docs/tutorials/physics/soft_body.rst:82 +msgid "Alternatively, you can increase the **Physics > Common > Physics Ticks per Second** project setting, which will also affect soft body simulation quality." msgstr "" #: ../../docs/tutorials/physics/soft_body.rst:86 +msgid "Cloak simulation" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:88 +msgid "Let's make a cloak in the Platformer 3D demo." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:92 +msgid "You can download the Platformer 3D demo on `GitHub `_ or `the Asset Library `_." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:96 +msgid "Open the ``player/player.tscn`` scene, add a ``SoftBody3D`` node below the root node, then assign a PlaneMesh resource to it in its **Mesh** property." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:99 +msgid "Open the PlaneMesh's properties and set the size to ``(0.5, 1.0)``, then set **Subdivide Width** and **Subdivide Depth** to ``5``. Adjust the SoftBody3D node's position and rotation so that the plane appears to be close to the character's back. You should end up with something like this:" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:104 +#: ../../docs/tutorials/physics/soft_body.rst:108 +msgid "Subdividing the PlaneMesh and placing it on the character's back" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:112 +msgid "Subdivision generates a more tessellated mesh for better simulations. However, higher subdivision levels will impact performance. Try to find a balance between performance and quality. This depends on the number of soft body simulations that you expect to be active at a given time, as well as the distance between the camera and the soft body." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:118 +msgid "Add a :ref:`BoneAttachment3D ` node under the skeleton node and select the Neck bone to attach the cloak to the character skeleton." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:123 +msgid "The BoneAttachment3D node is used to attach objects to a bone of an armature. The attached object will follow the bone's movement. For example, a character's held weapon can be attached this way." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:127 +msgid "Do **not** move the SoftBody3D node under the BoneAttachment3D node as of now. Instead, we'll configure its *pinned points* to follow the BoneAttachment3D node." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:130 +#: ../../docs/tutorials/physics/soft_body.rst:134 +msgid "Configuring the BoneAttachment3D node in the inspector" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:136 +msgid "To create pinned points, select the upper vertices in the SoftBody3D node. A pinned point appears blue in the 3D editor viewport:" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:139 +#: ../../docs/tutorials/physics/soft_body.rst:143 +msgid "Pinning the SoftBody3D's points in the inspector" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:145 +msgid "The pinned joints can be found in SoftBody3D's **Attachments** section, which is under the **Collision** section that must be expanded first. Choose the BoneAttachment3D node as the **Spatial Attachment Path** for each pinned joint. The pinned joints are now attached to the neck." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:152 +msgid "To assign the properties faster, you can drag-and-drop the BoneAttachment3D node from the scene tree dock to the **Spatial Attachment Path** property field." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:155 +msgid "Note that you may have to deselect then reselect the SoftBody3D node for the **Attachments** section to appear." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:158 +#: ../../docs/tutorials/physics/soft_body.rst:162 +msgid "Configuring pinned points to be attached to the BoneAttachment3D node in the SoftBody3D inspector" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:164 +msgid "The last step is to avoid clipping by adding the CharacterBody3D ``Player`` (the scene's root node) to the **Parent Collision Ignore** property of the SoftBody3D." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:167 +#: ../../docs/tutorials/physics/soft_body.rst:171 +msgid "Setting up the collision exception in the SoftBody3D inspector" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:173 +msgid "Play the scene and the cloak should simulate correctly." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:175 +#: ../../docs/tutorials/physics/soft_body.rst:179 +msgid "Final result when running the project's main scene" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:181 +msgid "This covers the basic settings of a soft body simulation. Experiment with the parameters to achieve the effect you are aiming for when making your game." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:186 +msgid "The cloak will not appear when viewed from certain angles due to backface culling. To resolve this, you can disable backface culling by assigning a new StandardMaterial3D, then setting its cull mode to **Disabled**. This will make the material render both sides of the plane." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:192 +msgid "Using imported meshes" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:194 +msgid "The **Save to File** option in the Advanced Import Settings dialog allows you to save a mesh to a standalone resource file that you can then attach to SoftBody3D nodes." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:198 +msgid "You may also want to disable LOD generation or change the LOD generation options when importing a mesh for use with SoftBody3D. The default import settings will produce an LOD that merges adjacent faces that are nearly flat with respect to each other, even at very close render distances. This works well for static meshes, but is often undesirable for use with SoftBody3D if you want these faces to be able to bend and move with respect to each other, instead of being rendered as a single plane." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:206 msgid "See :ref:`doc_importing_3d_scenes_import_configuration` and :ref:`doc_mesh_lod` for more details." msgstr "" diff --git a/sphinx/templates/tutorials/physics/troubleshooting_physics_issues.pot b/sphinx/templates/tutorials/physics/troubleshooting_physics_issues.pot index 60e4b80ff6..2ca32abeb8 100644 --- a/sphinx/templates/tutorials/physics/troubleshooting_physics_issues.pot +++ b/sphinx/templates/tutorials/physics/troubleshooting_physics_issues.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/using_area_2d.pot b/sphinx/templates/tutorials/physics/using_area_2d.pot index 57f2880639..2c443088c9 100644 --- a/sphinx/templates/tutorials/physics/using_area_2d.pot +++ b/sphinx/templates/tutorials/physics/using_area_2d.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/using_character_body_2d.pot b/sphinx/templates/tutorials/physics/using_character_body_2d.pot index a968736ab7..a75d09740c 100644 --- a/sphinx/templates/tutorials/physics/using_character_body_2d.pot +++ b/sphinx/templates/tutorials/physics/using_character_body_2d.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/physics/using_jolt_physics.pot b/sphinx/templates/tutorials/physics/using_jolt_physics.pot index 5c79535a59..b243af3ddf 100644 --- a/sphinx/templates/tutorials/physics/using_jolt_physics.pot +++ b/sphinx/templates/tutorials/physics/using_jolt_physics.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -28,329 +28,325 @@ msgid "The Jolt physics engine was added as an alternative to the existing Godot msgstr "" #: ../../docs/tutorials/physics/using_jolt_physics.rst:14 -msgid "It is important to note that the built-in Jolt Physics module is considered **not finished**, **experimental**, and **lacks feature parity** with both Godot Physics and the Godot Jolt extension. Behavior may change as it is developed further. Please keep that in mind when choosing what to use for your project." -msgstr "" - -#: ../../docs/tutorials/physics/using_jolt_physics.rst:19 msgid "The existing extension is now considered in maintenance mode. That means bug fixes will be merged, and it will be kept compatible with new versions of Godot until the built-in module has feature parity with the extension. The extension can be found `here on GitHub `_ and in Godot's asset library." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:25 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:20 msgid "To change the 3D physics engine to be Jolt Physics, set :ref:`Project Settings > Physics > 3D > Physics Engine` to ``Jolt Physics``. Once you've done that, click the **Save & Restart** button. When the editor opens again, 3D scenes should now be using Jolt for physics." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:31 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:26 msgid "Notable differences to Godot Physics" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:33 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:28 msgid "There are many differences between the existing Godot Physics engine and Jolt." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:36 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:31 msgid "Joint properties" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:38 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:33 msgid "The current interfaces for the 3D joint nodes don't quite line up with the interface of Jolt's own joints. As such, there are a number of joint properties that are not supported, mainly ones related to configuring the joint's soft limits." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:42 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:37 msgid "The unsupported properties are:" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:44 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:39 msgid "PinJoint3D: ``bias``, ``damping``, ``impulse_clamp``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:45 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:40 msgid "HingeJoint3D: ``bias``, ``softness``, ``relaxation``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:46 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:41 msgid "SliderJoint3D: ``angular_\\*``, ``\\*_limit/softness``, ``\\*_limit/restitution``, ``\\*_limit/damping``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:47 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:42 msgid "ConeTwistJoint3D: ``bias``, ``relaxation``, ``softness``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:48 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:43 msgid "Generic6DOFJoint3D: ``*_limit_*/softness``, ``*_limit_*/restitution``, ``*_limit_*/damping``, ``*_limit_*/erp``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:50 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:45 msgid "Currently a warning is emitted if you set these properties to anything but their default values." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:54 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:49 msgid "Single-body joints" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:56 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:51 msgid "You can, in Godot, omit one of the joint bodies for a two-body joint and effectively have \"the world\" be the other body. However, the node path that you assign your body to (:ref:`node_a` vs :ref:`node_b`) is ignored. Godot Physics will always behave as if you assigned it to ``node_a``, and since ``node_a`` is also what defines the frame of reference for the joint limits, you end up with inverted limits and a potentially strange limit shape, especially if your limits allow both linear and angular degrees of freedom." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:65 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:60 msgid "Jolt will behave as if you assigned the body to ``node_b`` instead, with ``node_a`` representing \"the world\". There is a project setting called :ref:`Physics > Jolt Physics 3D > Joints > World Node` that lets you toggle this behavior, if you need compatibility for an existing project." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:70 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:65 msgid "Collision margins" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:72 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:67 msgid "Jolt (and other similar physics engines) uses something that Jolt refers to as \"convex radius\" to help improve the performance and behavior of the types of collision detection that Jolt relies on for convex shapes. Other physics engines (Godot included) might refer to these as \"collision margins\" instead. Godot exposes these as the ``margin`` property on every Shape3D-derived class, but Godot Physics itself does not use them for anything." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:79 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:74 msgid "What these collision margins sometimes do in other engines (as described in Godot's documentation) is effectively add a \"shell\" around the shape, slightly increasing its size while also rounding off any edges/corners. In Jolt however, these margins are first used to shrink the shape, and then the \"shell\" is applied, resulting in edges/corners being similarly rounded off, but without increasing the size of the shape." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:86 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:81 msgid "To prevent having to tweak this margin property manually, since its default value can be problematic for smaller shapes, the Jolt module exposes a project setting called :ref:`Physics > Jolt Physics 3D > Collisions > Collision Margin Fraction` which is multiplied with the smallest axis of the shape's AABB to calculate the actual margin. The margin property of the shape is then instead used as an upper bound." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:93 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:88 msgid "These margins should, for most use-cases, be more or less transparent, but can sometimes result in odd collision normals when performing shape queries. You can lower the above mentioned project setting to mitigate some of this, including setting it to ``0.0``, but too small of a margin can also cause odd collision results, so is generally not recommended." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:100 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:95 msgid "Baumgarte stabilization" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:102 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:97 msgid "Baumgarte stabilization is a method to resolve penetrating bodies and push them to a state where they are just touching. In Godot Physics this works like a spring. This means that bodies can accelerate and may cause the bodies to overshoot and separate completely. With Jolt, the stabilization is only applied to the position and not to the velocity of the body. This means it cannot overshoot but it may take longer to resolve the penetration." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:109 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:104 msgid "The strength of this stabilization can be tweaked using the project setting :ref:`Physics > Jolt Physics 3D > Simulation > Baumgarte Stabilization Factor`. Setting this project setting to ``0.0`` will turn Baumgarte stabilization off. Setting it to ``1.0`` will resolve penetration in 1 simulation step. This is fast but often also unstable." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:116 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:111 msgid "Ghost collisions" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:118 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:113 msgid "Jolt employs two techniques to mitigate ghost collisions, meaning collisions with internal edges of shapes/bodies that result in collision normals that oppose the direction of movement." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:122 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:117 msgid "The first technique, called \"active edge detection\", marks edges of triangles in :ref:`class_ConcavePolygonShape3D` or :ref:`class_HeightMapShape3D` as either \"active\" or \"inactive\", based on the angle to the neighboring triangle. When a collision happens with an inactive edge the collision normal will be replaced with the triangle's normal instead, to lessen the effect of ghost collisions." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:128 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:123 msgid "The angle threshold for this active edge detection is configurable through the project setting :ref:`Physics >Jolt Physics 3D > Collisions > Active Edge Threshold`." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:131 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:126 msgid "The second technique, called \"enhanced internal edge removal\", instead adds runtime checks to detect whether an edge is active or inactive, based on the contact points of the two bodies. This has the benefit of applying not only to collisions with :ref:`class_ConcavePolygonShape3D` and :ref:`class_HeightMapShape3D`, but also edges between any shapes within the same body." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:137 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:132 msgid "Enhanced internal edge removal can be toggled on and off for the various contexts to which it's applied, using the :ref:`Physics >Jolt Physics 3D > Simulation > Use Enhanced Internal Edge Removal`, project setting, and the similar settings for :ref:`queries` and :ref:`motion queries`." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:142 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:137 msgid "Note that neither the active edge detection nor enhanced internal edge removal apply when dealing with ghost collisions between two different bodies." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:146 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:141 msgid "Memory usage" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:148 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:143 msgid "Jolt uses a stack allocator for temporary allocations within its simulation step. This stack allocator requires allocating a set amount of memory up front, which can be configured using the :ref:`Physics > Jolt Physics 3D > Limits > Temporary Memory Buffer Size` project setting." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:154 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:149 msgid "Ray-cast face index" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:156 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:151 msgid "The ``face_index`` property returned in the results of :ref:`intersect_ray()` and RayCast3D will by default always be ``-1`` with Jolt. The project setting :ref:`Physics > Jolt Physics 3D > Queries > Enable Ray Cast Face Index` will enable them." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:160 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:155 msgid "Note that enabling this setting will increase the memory requirement of :ref:`class_ConcavePolygonShape3D` with about 25%." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:164 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:159 msgid "Kinematic RigidBody3D contacts" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:166 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:161 msgid "When using Jolt, a :ref:`class_RigidBody3D` frozen with :ref:`FREEZE_MODE_KINEMATIC` will by default not report contacts from collisions with other static/kinematic bodies, for performance reasons, even when setting a non-zero :ref:`max_contacts_reported`. If you have many/large kinematic bodies overlapping with complex static geometry, such as :ref:`class_ConcavePolygonShape3D` or :ref:`class_HeightMapShape3D`, you can end up wasting a significant amount of CPU performance and memory without realizing it." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:174 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:169 msgid "For this reason this behavior is opt-in through the project setting :ref:`Physics > Jolt Physics 3D > Simulation > Generate All Kinematic Contacts`." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:178 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:173 msgid "Contact impulses" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:180 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:175 msgid "Due to limitations internal to Jolt, the contact impulses provided by :ref:`PhysicsDirectBodyState3D.get_contact_impulse()` are estimated ahead of time based on things like the contact manifold and velocities of the colliding bodies. This means that the reported impulses will only be accurate in cases where the two bodies in question are not colliding with any other bodies." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:186 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:181 msgid "Area3D and SoftBody3D" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:188 -msgid "Jolt does not currently support any interactions between :ref:`class_SoftBody3D` and :ref:`class_Area3D`, such as overlap events, or the wind properties found on :ref:`class_Area3D`." +#: ../../docs/tutorials/physics/using_jolt_physics.rst:183 +msgid "Jolt does not currently support any interactions between :ref:`class_SoftBody3D` and :ref:`class_Area3D`, such as the wind and gravity properties found on :ref:`class_Area3D`." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:193 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:188 msgid "WorldBoundaryShape3D" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:195 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:190 msgid ":ref:`class_WorldBoundaryShape3D`, which is meant to represent an infinite plane, is implemented a bit differently in Jolt compared to Godot Physics. Both engines have an upper limit for how big the effective size of this plane can be, but this size is much smaller when using Jolt, in order to avoid precision issues." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:200 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:195 msgid "You can configure this size using the :ref:`Physics > Jolt Physics 3D > Limits > World Boundary Shape Size` project setting." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:204 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:199 msgid "Notable differences to the Godot Jolt extension" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:206 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:201 msgid "While the built-in Jolt module is largely a straight port of the Godot Jolt extension, there are a few things that are different." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:210 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:205 msgid "Project settings" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:212 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:207 msgid "All project settings have been moved from the ``physics/jolt_3d`` category to ``physics/jolt_physics_3d``." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:215 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:210 msgid "On top of that, there's been some renaming and refactoring of the individual project settings as well. These include:" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:218 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:213 msgid "``sleep/enabled`` is now ``simulation/allow_sleep.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:219 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:214 msgid "``sleep/velocity_threshold`` is now ``simulation/sleep_velocity_threshold.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:220 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:215 msgid "``sleep/time_threshold`` is now ``simulation/sleep_time_threshold.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:221 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:216 msgid "``collisions/use_shape_margins`` is now ``collisions/collision_margin_fraction``, where a value of 0 is equivalent to disabling it." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:223 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:218 msgid "``collisions/use_enhanced_internal_edge_removal`` is now ``simulation/use_enhanced_internal_edge_removal.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:224 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:219 msgid "``collisions/areas_detect_static_bodies`` is now ``simulation/areas_detect_static_bodies.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:225 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:220 msgid "``collisions/report_all_kinematic_contacts`` is now ``simulation/generate_all_kinematic_contacts.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:226 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:221 msgid "``collisions/soft_body_point_margin`` is now ``simulation/soft_body_point_radius.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:227 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:222 msgid "``collisions/body_pair_cache_enabled is now simulation/body_pair_contact_cache_enabled.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:228 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:223 msgid "``collisions/body_pair_cache_distance_threshold`` is ``now simulation/body_pair_contact_cache_distance_threshold.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:229 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:224 msgid "``collisions/body_pair_cache_angle_threshold is now simulation/body_pair_contact_cache_angle_threshold.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:230 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:225 msgid "``continuous_cd/movement_threshold`` is now ``simulation/continuous_cd_movement_threshold``, but expressed as a fraction instead of a percentage." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:232 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:227 msgid "``continuous_cd/max_penetration`` is now ``simulation/continuous_cd_max_penetration``, but expressed as a fraction instead of a percentage." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:234 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:229 msgid "``kinematics/use_enhanced_internal_edge_removal`` is now ``motion_queries/use_enhanced_internal_edge_removal.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:235 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:230 msgid "``kinematics/recovery_iterations`` is now ``motion_queries/recovery_iterations``, but expressed as a fraction instead of a percentage." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:237 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:232 msgid "``kinematics/recovery_amount`` is now ``motion_queries/recovery_amount.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:238 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:233 msgid "``queries/use_legacy_ray_casting`` has been removed." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:239 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:234 msgid "``solver/position_iterations`` is now ``simulation/position_steps.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:240 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:235 msgid "``solver/velocity_iterations`` is now ``simulation/velocity_steps.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:241 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:236 msgid "``solver/position_correction`` is now ``simulation/baumgarte_stabilization_factor``, but expressed as a fraction instead of a percentage." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:243 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:238 msgid "``solver/active_edge_threshold`` is now ``collisions/active_edge_threshold.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:244 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:239 msgid "``solver/bounce_velocity_threshold`` is now ``simulation/bounce_velocity_threshold.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:245 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:240 msgid "``solver/contact_speculative_distance`` is now ``simulation/speculative_contact_distance.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:246 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:241 msgid "``solver/contact_allowed_penetration`` is now ``simulation/penetration_slop.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:247 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:242 msgid "``limits/max_angular_velocity`` is now stored as radians instead." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:248 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:243 msgid "``limits/max_temporary_memory`` is now ``limits/temporary_memory_buffer_size.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:251 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:246 msgid "Joint nodes" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:253 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:248 msgid "The joint nodes that are exposed in the Godot Jolt extension (JoltPinJoint3D, JoltHingeJoint3D, JoltSliderJoint3D, JoltConeTwistJoint3D, and JoltGeneric6DOFJoint) have not been included in the Jolt module." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:258 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:253 msgid "Thread safety" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:260 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:255 msgid "Unlike the Godot Jolt extension, the Jolt module does have thread-safety, including support for the :ref:`Physics > 3D > Run On Separate Thread` project setting. However this has not been tested very thoroughly, so it should be considered experimental." msgstr "" diff --git a/sphinx/templates/tutorials/platform/android/android_in_app_purchases.pot b/sphinx/templates/tutorials/platform/android/android_in_app_purchases.pot index 5bfa484e3e..207c9dccb3 100644 --- a/sphinx/templates/tutorials/platform/android/android_in_app_purchases.pot +++ b/sphinx/templates/tutorials/platform/android/android_in_app_purchases.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/platform/android/android_library.pot b/sphinx/templates/tutorials/platform/android/android_library.pot index e8af5e4706..55b3658452 100644 --- a/sphinx/templates/tutorials/platform/android/android_library.pot +++ b/sphinx/templates/tutorials/platform/android/android_library.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/platform/android/android_plugin.pot b/sphinx/templates/tutorials/platform/android/android_plugin.pot index ffef94a5de..d760b2ffba 100644 --- a/sphinx/templates/tutorials/platform/android/android_plugin.pot +++ b/sphinx/templates/tutorials/platform/android/android_plugin.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/platform/android/index.pot b/sphinx/templates/tutorials/platform/android/index.pot index 06cfd87e4d..3ff0b9a77c 100644 --- a/sphinx/templates/tutorials/platform/android/index.pot +++ b/sphinx/templates/tutorials/platform/android/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/platform/android/javaclasswrapper_and_androidruntimeplugin.pot b/sphinx/templates/tutorials/platform/android/javaclasswrapper_and_androidruntimeplugin.pot index 5710d911d5..3eca768a4c 100644 --- a/sphinx/templates/tutorials/platform/android/javaclasswrapper_and_androidruntimeplugin.pot +++ b/sphinx/templates/tutorials/platform/android/javaclasswrapper_and_androidruntimeplugin.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -102,3 +102,7 @@ msgstr "" #: ../../docs/tutorials/platform/android/javaclasswrapper_and_androidruntimeplugin.rst:122 msgid "This example creates an intent to send a text:" msgstr "" + +#: ../../docs/tutorials/platform/android/javaclasswrapper_and_androidruntimeplugin.rst:138 +msgid "Example: Saving an image to the Android gallery" +msgstr "" diff --git a/sphinx/templates/tutorials/platform/android/resolving_crashes_on_android.pot b/sphinx/templates/tutorials/platform/android/resolving_crashes_on_android.pot new file mode 100644 index 0000000000..6db7d28daa --- /dev/null +++ b/sphinx/templates/tutorials/platform/android/resolving_crashes_on_android.pot @@ -0,0 +1,149 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine latest\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:4 +msgid "Resolving crashes on Android" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:6 +msgid "When your game crashes on Android, you often see obfuscated stack traces in Play Console or other crash reporting tools like Firebase Crashlytics. To make these stack traces human-readable (symbolicated), you need native debug symbols that correspond to your game's exported build." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:10 +msgid "Godot now provides downloadable native debug symbols for each official export template." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:13 +msgid "Getting Native Debug symbols for official templates" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:15 +msgid "Native debug symbol files are provided for every stable Godot release and can be downloaded from the `GitHub release page `_." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:18 +msgid "For example, to get the native debug symbols for version ``4.5.1.stable``:" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:20 +msgid "Go to the `4.5.1.stable release page `_" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:21 +msgid "Download the release artifact ``Godot_native_debug_symbols.4.5.1.stable.template_release.android.zip``" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:24 +msgid "Getting Native Debug symbols for custom builds" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:26 +msgid "Your exported template and its native debug symbols must come from the **same build**, so you can use the official symbols only if you are using the **official export templates**. If you are building **custom export templates**, you need to generate matching symbol files yourself." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:30 +msgid "To do so, add ``debug_symbols=yes separate_debug_symbols=yes`` to your scons build command. This will generate a file named ``android-template-release-native-symbols.zip`` containing the native debug symbols for your custom build." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:33 +msgid "For example," +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:39 +msgid "If you are building for multiple architectures, you should include the ``separate_debug_symbols=yes`` only in the last build command, similar to how ``generate_android_binaries=yes`` is used." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:50 +msgid "Uploading Symbols to Google Play Console" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:52 +msgid "Follow these steps to upload the native debug symbols:" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:54 +msgid "Open `Play Console `_." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:55 +msgid "Select any app." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:56 +msgid "In the left menu, navigate to ``Test and release > Latest releases and bundles``." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:60 +msgid "Now choose the relevant bundle and open it." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:64 +msgid "Select the ``Downloads`` tab, and scroll down to the ``Assets`` section." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:68 +msgid "Next to ``Native debug symbols``, click the upload arrow icon." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:72 +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:87 +msgid "Select and upload the corresponding native debug symbols file for that build version." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:76 +msgid "Alternatively, you can upload the symbols when creating a new release:" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:78 +msgid "On the Create release page, locate your new release bundle." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:82 +msgid "Click the three-dot menu beside it." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:83 +msgid "Choose ``Upload native debug symbols (.zip)`` from the menu." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:90 +msgid "Manually Symbolicating Crash Logs" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:92 +msgid "You can also symbolicate the crash logs manually using the `ndk-stack `_ tool included in the Android NDK." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:96 +msgid "If you already have the Android SDK installed, you can find the ``ndk-stack`` tool inside the ``ndk`` folder in your SDK location. Otherwise, you can download the NDK directly from the `NDK downloads page `_." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:99 +msgid "Extract the native debug symbols zip you downloaded earlier (or generated with your custom build)." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:100 +msgid "Save your crash log to a text file (for example, ``crash.txt``)." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:101 +msgid "Run ndk-stack with the path to the symbol directory that matches the crash's CPU architecture (for example, ``arm64-v8a``):" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:107 +msgid "The output will display a symbolicated trace, showing file names and line numbers in Godot's source code (or your custom build)." +msgstr "" diff --git a/sphinx/templates/tutorials/platform/consoles.pot b/sphinx/templates/tutorials/platform/consoles.pot index e9d13ddaec..3fff80b352 100644 --- a/sphinx/templates/tutorials/platform/consoles.pot +++ b/sphinx/templates/tutorials/platform/consoles.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/platform/index.pot b/sphinx/templates/tutorials/platform/index.pot index 3ffd1b4852..508d27f246 100644 --- a/sphinx/templates/tutorials/platform/index.pot +++ b/sphinx/templates/tutorials/platform/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/platform/ios/index.pot b/sphinx/templates/tutorials/platform/ios/index.pot index 5f91e3a5b3..8ad655560b 100644 --- a/sphinx/templates/tutorials/platform/ios/index.pot +++ b/sphinx/templates/tutorials/platform/ios/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/platform/ios/ios_plugin.pot b/sphinx/templates/tutorials/platform/ios/ios_plugin.pot index cb84aeff52..641482fdaa 100644 --- a/sphinx/templates/tutorials/platform/ios/ios_plugin.pot +++ b/sphinx/templates/tutorials/platform/ios/ios_plugin.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/platform/ios/plugins_for_ios.pot b/sphinx/templates/tutorials/platform/ios/plugins_for_ios.pot index 32c51a10d3..32b41cdf3d 100644 --- a/sphinx/templates/tutorials/platform/ios/plugins_for_ios.pot +++ b/sphinx/templates/tutorials/platform/ios/plugins_for_ios.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/platform/web/customizing_html5_shell.pot b/sphinx/templates/tutorials/platform/web/customizing_html5_shell.pot index f2c896cf94..1a24ef0999 100644 --- a/sphinx/templates/tutorials/platform/web/customizing_html5_shell.pot +++ b/sphinx/templates/tutorials/platform/web/customizing_html5_shell.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -104,7 +104,7 @@ msgid ":ref:`Show Image `: ``fullsize--true``, ``fullsize--false``" +msgid ":ref:`Stretch Mode `: ``fullsize--true`` (if **not** Disabled), ``fullsize--false``" msgstr "" #: ../../docs/tutorials/platform/web/customizing_html5_shell.rst:97 diff --git a/sphinx/templates/tutorials/platform/web/html5_shell_classref.pot b/sphinx/templates/tutorials/platform/web/html5_shell_classref.pot index b249303f96..90b6bcd538 100644 --- a/sphinx/templates/tutorials/platform/web/html5_shell_classref.pot +++ b/sphinx/templates/tutorials/platform/web/html5_shell_classref.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/platform/web/index.pot b/sphinx/templates/tutorials/platform/web/index.pot index 6e66e3e8ab..a41682c05d 100644 --- a/sphinx/templates/tutorials/platform/web/index.pot +++ b/sphinx/templates/tutorials/platform/web/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/platform/web/javascript_bridge.pot b/sphinx/templates/tutorials/platform/web/javascript_bridge.pot index 427678bf41..329bfa4d07 100644 --- a/sphinx/templates/tutorials/platform/web/javascript_bridge.pot +++ b/sphinx/templates/tutorials/platform/web/javascript_bridge.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/plugins/editor/3d_gizmos.pot b/sphinx/templates/tutorials/plugins/editor/3d_gizmos.pot index e8896f4b90..21571ada80 100644 --- a/sphinx/templates/tutorials/plugins/editor/3d_gizmos.pot +++ b/sphinx/templates/tutorials/plugins/editor/3d_gizmos.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -48,49 +48,49 @@ msgid "This would be a basic setup:" msgstr "" #: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:61 -msgid "For simple gizmos, inheriting :ref:`EditorNode3DGizmoPlugin ` is enough. If you want to store some per-gizmo data or you are porting a Godot 3.0 gizmo to 3.1+, you should go with the second approach." +msgid "For simple gizmos, inheriting :ref:`EditorNode3DGizmoPlugin ` is enough. If you want to store some per-gizmo data, you should go with the second approach." msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:67 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:66 msgid "Simple approach" msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:69 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:68 msgid "The first step is to, in our custom gizmo plugin, override the :ref:`_has_gizmo()` method so that it returns ``true`` when the node parameter is of our target type." msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:83 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:82 msgid "Then we can override methods like :ref:`_redraw()` or all the handle related ones." msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:117 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:116 msgid "Note that we created a material in the `_init` method, and retrieved it in the `_redraw` method using :ref:`get_material()`. This method retrieves one of the material's variants depending on the state of the gizmo (selected and/or editable)." msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:122 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:121 msgid "So the final plugin would look somewhat like this:" msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:163 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:162 msgid "Note that we just added some handles in the `_redraw` method, but we still need to implement the rest of handle-related callbacks in :ref:`EditorNode3DGizmoPlugin ` to get properly working handles." msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:168 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:167 msgid "Alternative approach" msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:170 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:169 msgid "In some cases we want to provide our own implementation of :ref:`EditorNode3DGizmo`, maybe because we want to have some state stored in each gizmo or because we are porting an old gizmo plugin and we don't want to go through the rewriting process." msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:174 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:173 msgid "In these cases all we need to do is, in our new gizmo plugin, override :ref:`_create_gizmo()`, so it returns our custom gizmo implementation for the Node3D nodes we want to target." msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:199 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:198 msgid "This way all the gizmo logic and drawing methods can be implemented in a new class extending :ref:`EditorNode3DGizmo`, like so:" msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:237 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:236 msgid "Note that we just added some handles in the `_redraw` method, but we still need to implement the rest of handle-related callbacks in :ref:`EditorNode3DGizmo` to get properly working handles." msgstr "" diff --git a/sphinx/templates/tutorials/plugins/editor/import_plugins.pot b/sphinx/templates/tutorials/plugins/editor/import_plugins.pot index 351209070d..b9255bde5f 100644 --- a/sphinx/templates/tutorials/plugins/editor/import_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/import_plugins.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/plugins/editor/index.pot b/sphinx/templates/tutorials/plugins/editor/index.pot index a2545c5c7e..990577ce7b 100644 --- a/sphinx/templates/tutorials/plugins/editor/index.pot +++ b/sphinx/templates/tutorials/plugins/editor/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/plugins/editor/inspector_plugins.pot b/sphinx/templates/tutorials/plugins/editor/inspector_plugins.pot index 8718de9da8..06caa170e7 100644 --- a/sphinx/templates/tutorials/plugins/editor/inspector_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/inspector_plugins.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/plugins/editor/installing_plugins.pot b/sphinx/templates/tutorials/plugins/editor/installing_plugins.pot index 355cc64a52..cd42eed801 100644 --- a/sphinx/templates/tutorials/plugins/editor/installing_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/installing_plugins.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/plugins/editor/making_main_screen_plugins.pot b/sphinx/templates/tutorials/plugins/editor/making_main_screen_plugins.pot index dc7777ddaa..8a8949c02c 100644 --- a/sphinx/templates/tutorials/plugins/editor/making_main_screen_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/making_main_screen_plugins.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/plugins/editor/making_plugins.pot b/sphinx/templates/tutorials/plugins/editor/making_plugins.pot index 309fcc4952..5b4239585d 100644 --- a/sphinx/templates/tutorials/plugins/editor/making_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/making_plugins.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -59,174 +59,178 @@ msgstr "" msgid "To continue with the example, use the following values:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:71 -msgid "Unchecking the ``Activate now?`` option in C# is always required because, like every other C# script, the EditorPlugin script needs to be compiled which requires building the project. After building the project the plugin can be enabled in the ``Plugins`` tab of ``Project Settings``." +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:69 +msgid "In C#, the EditorPlugin script needs to be compiled, which requires building the project. After building the project the plugin can be enabled in the ``Plugins`` tab of ``Project Settings``." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:76 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:73 msgid "You should end up with a directory structure like this:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:80 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:77 msgid "``plugin.cfg`` is an INI file with metadata about your plugin. The name and description help people understand what it does. Your name helps you get properly credited for your work. The version number helps others know if they have an outdated version; if you are unsure on how to come up with the version number, check out `Semantic Versioning `_. The main script file will instruct Godot what your plugin does in the editor once it is active." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:89 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:86 msgid "The script file" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:91 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:88 msgid "Upon creation of the plugin, the dialog will automatically open the EditorPlugin script for you. The script has two requirements that you cannot change: it must be a ``@tool`` script, or else it will not load properly in the editor, and it must inherit from :ref:`class_EditorPlugin`." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:98 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:95 msgid "In addition to the EditorPlugin script, any other GDScript that your plugin uses must *also* be a tool. Any GDScript without ``@tool`` used by the editor will act like an empty file!" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:102 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:99 msgid "It's important to deal with initialization and clean-up of resources. A good practice is to use the virtual function :ref:`_enter_tree() ` to initialize your plugin and :ref:`_exit_tree() ` to clean it up. Thankfully, the dialog generates these callbacks for you. Your script should look something like this:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:146 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:143 msgid "This is a good template to use when creating new plugins." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:149 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:146 msgid "A custom node" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:151 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:148 msgid "Sometimes you want a certain behavior in many nodes, such as a custom scene or control that can be reused. Instancing is helpful in a lot of cases, but sometimes it can be cumbersome, especially if you're using it in many projects. A good solution to this is to make a plugin that adds a node with a custom behavior." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:159 -msgid "Nodes added via an EditorPlugin are \"CustomType\" nodes. While they work with any scripting language, they have fewer features than :ref:`the Script Class system `. If you are writing GDScript or NativeScript, we recommend using Script Classes instead." +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:156 +msgid "Nodes added via an EditorPlugin's :ref:`add_custom_type() ` function are \"custom type\" nodes. While they work with any scripting language, they have fewer features than :ref:`the Script Class system `. If you are using GDScript or GDExtension, we recommend using Script Classes instead." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:164 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:162 +msgid "Custom types are still the recommended approach for C#, as it does not support Script Classes." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:165 msgid "To create a new node type, you can use the function :ref:`add_custom_type() ` from the :ref:`class_EditorPlugin` class. This function can add new types to the editor (nodes or resources). However, before you can create the type, you need a script that will act as the logic for the type. While that script doesn't have to use the ``@tool`` annotation, it can be added so the script runs in the editor." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:171 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:172 msgid "For this tutorial, we'll create a button that prints a message when clicked. For that, we'll need a script that extends from :ref:`class_Button`. It could also extend :ref:`class_BaseButton` if you prefer:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:208 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:209 msgid "That's it for our basic button. You can save this as ``my_button.gd`` inside the plugin folder. You'll also need a 16×16 icon to show in the scene tree. If you don't have one, you can grab the default one from the engine and save it in your `addons/my_custom_node` folder as `icon.png`, or use the default Godot logo (`preload(\"res://icon.svg\")`)." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:216 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:217 msgid "SVG images that are used as custom node icons should have the **Editor > Scale With Editor Scale** and **Editor > Convert Colors With Editor Theme** :ref:`import options ` enabled. This allows icons to follow the editor's scale and theming settings if the icons are designed with the same color palette as Godot's own icons." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:224 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:225 msgid "Now, we need to add it as a custom type so it shows on the **Create New Node** dialog. For that, change the ``custom_node.gd`` script to the following:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:271 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:279 msgid "With that done, the plugin should already be available in the plugin list in the **Project Settings**, so activate it as explained in `Checking the results`_." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:274 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:282 msgid "Then try it out by adding your new node:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:278 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:286 msgid "When you add the node, you can see that it already has the script you created attached to it. Set a text to the button, save and run the scene. When you click the button, you can see some text in the console:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:285 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:293 msgid "A custom dock" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:287 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:295 msgid "Sometimes, you need to extend the editor and add tools that are always available. An easy way to do it is to add a new dock with a plugin. Docks are just scenes based on Control, so they are created in a way similar to usual GUI scenes." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:291 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:299 msgid "Creating a custom dock is done just like a custom node. Create a new ``plugin.cfg`` file in the ``addons/my_custom_dock`` folder, then add the following content to it:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:316 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:324 msgid "Then create the script ``custom_dock.gd`` in the same folder. Fill it with the :ref:`template we've seen before ` to get a good start." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:320 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:328 msgid "Since we're trying to add a new custom dock, we need to create the contents of the dock. This is nothing more than a standard Godot scene: just create a new scene in the editor then edit it." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:324 -msgid "For an editor dock, the root node **must** be a :ref:`Control ` or one of its child classes. For this tutorial, you can create a single button. The name of the root node will also be the name that appears on the dock tab, so be sure to give it a short and descriptive name. Also, don't forget to add some text to your button." -msgstr "" - #: ../../docs/tutorials/plugins/editor/making_plugins.rst:332 -msgid "Save this scene as ``my_dock.tscn``. Now, we need to grab the scene we created then add it as a dock in the editor. For this, you can rely on the function :ref:`add_control_to_dock() ` from the :ref:`EditorPlugin ` class." +msgid "For an editor dock, the root node **must** be a :ref:`Control ` or one of its child classes. For this tutorial, you can create a single button. Don't forget to add some text to your button." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:337 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:338 +msgid "Save this scene as ``my_dock.tscn``. Now, we need to grab the scene we created then add it as a dock in the editor. For this, you can rely on the function :ref:`add_dock() ` from the :ref:`EditorPlugin ` class." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:343 msgid "You need to select a dock position and define the control to add (which is the scene you just created). Don't forget to **remove the dock** when the plugin is deactivated. The script could look like this:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:397 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:427 msgid "Note that, while the dock will initially appear at its specified position, the user can freely change its position and save the resulting layout." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:401 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:431 msgid "Checking the results" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:403 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:433 msgid "It's now time to check the results of your work. Open the **Project Settings** and click on the **Plugins** tab. Your plugin should be the only one on the list." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:409 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:439 msgid "You can see the plugin is not enabled. Click the **Enable** checkbox to activate the plugin. The dock should become visible before you even close the settings window. You should now have a custom dock:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:419 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:449 msgid "Registering autoloads/singletons in plugins" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:421 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:451 msgid "It is possible for editor plugins to automatically register :ref:`autoloads ` when the plugin is enabled. This also includes unregistering the autoload when the plugin is disabled." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:425 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:455 msgid "This makes setting up plugins faster for users, as they no longer have to manually add autoloads to their project settings if your editor plugin requires the use of an autoload." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:429 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:459 msgid "Use the following code to register a singleton from an editor plugin:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:474 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:504 msgid "Using sub-plugins" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:476 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:506 msgid "Often a plugin adds multiple things, for example a custom node and a panel. In those cases it might be easier to have a separate plugin script for each of those features. Sub-plugins can be used for this." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:480 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:510 msgid "First create all plugins and sub plugins as normal plugins:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:484 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:514 msgid "Then move the sub plugins into the main plugin folder:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:488 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:518 msgid "Godot will hide sub-plugins from the plugin list, so that a user can't enable or disable them. Instead the main plugin script should enable and disable sub-plugins like this:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:509 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:539 msgid "Going beyond" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:511 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:541 msgid "Now that you've learned how to make basic plugins, you can extend the editor in several ways. Lots of functionality can be added to the editor with GDScript; it is a powerful way to create specialized editors without having to delve into C++ modules." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:516 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:546 msgid "You can make your own plugins to help yourself and share them in the `Asset Library `_ so that people can benefit from your work." msgstr "" diff --git a/sphinx/templates/tutorials/plugins/editor/visual_shader_plugins.pot b/sphinx/templates/tutorials/plugins/editor/visual_shader_plugins.pot index 1ca0392329..056713a824 100644 --- a/sphinx/templates/tutorials/plugins/editor/visual_shader_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/visual_shader_plugins.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/plugins/index.pot b/sphinx/templates/tutorials/plugins/index.pot index cb95e02377..5ba3125881 100644 --- a/sphinx/templates/tutorials/plugins/index.pot +++ b/sphinx/templates/tutorials/plugins/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/plugins/running_code_in_the_editor.pot b/sphinx/templates/tutorials/plugins/running_code_in_the_editor.pot index 2d4915191d..b4816c53f0 100644 --- a/sphinx/templates/tutorials/plugins/running_code_in_the_editor.pot +++ b/sphinx/templates/tutorials/plugins/running_code_in_the_editor.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/rendering/compositor.pot b/sphinx/templates/tutorials/rendering/compositor.pot index 567f6f6d82..249d4536af 100644 --- a/sphinx/templates/tutorials/rendering/compositor.pot +++ b/sphinx/templates/tutorials/rendering/compositor.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/rendering/index.pot b/sphinx/templates/tutorials/rendering/index.pot index 0d436843b1..ddd7b22080 100644 --- a/sphinx/templates/tutorials/rendering/index.pot +++ b/sphinx/templates/tutorials/rendering/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/rendering/jitter_stutter.pot b/sphinx/templates/tutorials/rendering/jitter_stutter.pot index ab00d20884..c47c497ea8 100644 --- a/sphinx/templates/tutorials/rendering/jitter_stutter.pot +++ b/sphinx/templates/tutorials/rendering/jitter_stutter.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/rendering/multiple_resolutions.pot b/sphinx/templates/tutorials/rendering/multiple_resolutions.pot index 8425581066..300f9e7f95 100644 --- a/sphinx/templates/tutorials/rendering/multiple_resolutions.pot +++ b/sphinx/templates/tutorials/rendering/multiple_resolutions.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/rendering/renderers.pot b/sphinx/templates/tutorials/rendering/renderers.pot index c39e6cd63f..0c5ccb89f0 100644 --- a/sphinx/templates/tutorials/rendering/renderers.pot +++ b/sphinx/templates/tutorials/rendering/renderers.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/rendering/viewports.pot b/sphinx/templates/tutorials/rendering/viewports.pot index 7a9c6d95de..59050340ec 100644 --- a/sphinx/templates/tutorials/rendering/viewports.pot +++ b/sphinx/templates/tutorials/rendering/viewports.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_basics.pot b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_basics.pot index d902b06522..e4e88eec2e 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_basics.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_basics.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -28,7 +28,7 @@ msgid "This page provides a brief introduction to C#, both what it is and how to msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:14 -msgid "C# is a high-level programming language developed by Microsoft. In Godot, it is implemented with .NET 8.0." +msgid "C# is a high-level programming language developed by Microsoft. In Godot, it is implemented with the modern .NET runtime." msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:19 @@ -44,7 +44,7 @@ msgid "Prerequisites" msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:36 -msgid "Godot bundles the parts of .NET needed to run already compiled games. However, Godot does not bundle the tools required to build and compile games, such as MSBuild and the C# compiler. These are included in the .NET SDK, and need to be installed separately." +msgid "Godot bundles the parts of .NET needed to run already-compiled games. However, Godot does not bundle the tools required to build and compile games, such as MSBuild and the C# compiler. These are included in the .NET SDK, and need to be installed separately." msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:41 @@ -52,309 +52,309 @@ msgid "In summary, you must have installed the .NET SDK **and** the .NET-enabled msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:44 -msgid "Download and install the latest stable version of the SDK from the `.NET download page `__." +msgid "Download and install the latest stable version of the SDK from the `.NET download page `__. Godot 4.5 requires .NET 8 or later, but exporting to Android requires .NET 9 or later." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:49 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:50 msgid "Be sure to install the 64-bit version of the SDK(s) if you are using the 64-bit version of Godot." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:52 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:53 msgid "If you are building Godot from source, make sure to follow the steps to enable .NET support in your build as outlined in the :ref:`doc_compiling_with_dotnet` page." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:59 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:60 msgid "Configuring an external editor" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:61 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:62 msgid "C# support in Godot's built-in script editor is minimal. Consider using an external IDE or editor, such as `Visual Studio Code `__ or `Visual Studio `__. These provide autocompletion, debugging, and other useful features for C#. To select an external editor in Godot, click on **Editor → Editor Settings** and scroll down to **Dotnet**. Under **Dotnet**, click on **Editor**, and select your external editor of choice. Godot currently supports the following external editors:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:70 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:71 msgid "Visual Studio 2022" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:71 -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:94 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:72 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:95 msgid "Visual Studio Code" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:72 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:73 msgid "MonoDevelop" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:73 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:74 msgid "Visual Studio for Mac" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:74 -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:79 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:75 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:80 msgid "JetBrains Rider" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:76 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:77 msgid "See the following sections for how to configure an external editor:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:81 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:82 msgid "After reading the \"Prerequisites\" section, you can download and install `JetBrains Rider `__." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:84 -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:99 -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:168 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:85 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:100 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:169 msgid "In Godot's **Editor → Editor Settings** menu:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:86 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:87 msgid "Set **Dotnet** -> **Editor** -> **External Editor** to **JetBrains Rider**." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:88 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:89 msgid "In Rider:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:90 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:91 msgid "Set **MSBuild version** to **.NET Core**." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:91 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:92 msgid "If you are using a Rider version below 2024.2, install the **Godot support** plugin. This functionality is now built into Rider." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:96 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:97 msgid "After reading the \"Prerequisites\" section, you can download and install `Visual Studio Code `__ (aka VS Code)." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:101 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:102 msgid "Set **Dotnet** -> **Editor** -> **External Editor** to **Visual Studio Code**." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:103 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:104 msgid "In Visual Studio Code:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:105 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:106 msgid "Install the `C# `__ extension." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:107 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:108 msgid "To configure a project for debugging, you need a ``tasks.json`` and ``launch.json`` file in the ``.vscode`` folder with the necessary configuration." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:110 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:111 msgid "Here is an example ``launch.json``:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:130 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:131 msgid "For this launch configuration to work, you need to either setup a GODOT4 environment variable that points to the Godot executable, or replace ``program`` parameter with the path to the Godot executable." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:134 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:135 msgid "Here is an example ``tasks.json``:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:153 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:154 msgid "Now, when you start the debugger in Visual Studio Code, your Godot project will run." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:156 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:157 msgid "Visual Studio (Windows only)" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:158 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:159 msgid "Download and install the latest version of `Visual Studio `__. Visual Studio will include the required SDKs if you have the correct workloads selected, so you don't need to manually install the things listed in the \"Prerequisites\" section." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:164 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:165 msgid "While installing Visual Studio, select this workload:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:166 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:167 msgid ".NET desktop development" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:170 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:171 msgid "Set **Dotnet** -> **Editor** -> **External Editor** to **Visual Studio**." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:172 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:173 msgid "If you see an error like \"Unable to find package Godot.NET.Sdk\", your NuGet configuration may be incorrect and need to be fixed." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:175 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:176 msgid "A simple way to fix the NuGet configuration file is to regenerate it. In a file explorer window, go to ``%AppData%\\NuGet``. Rename or delete the ``NuGet.Config`` file. When you build your Godot project again, the file will be automatically created with default values." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:180 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:181 msgid "To debug your C# scripts using Visual Studio, open the .sln file that is generated after opening the first C# script in the editor. In the **Debug** menu, go to the **Debug Properties** menu item for your project. Click the **Create a new profile** button and choose **Executable**. In the **Executable** field, browse to the path of the C# version of the Godot editor, or type ``%GODOT4%`` if you have created an environment variable for the Godot executable path. It must be the path to the main Godot executable, not the 'console' version. For the **Working Directory**, type a single period, ``.``, meaning the current directory. Also check the **Enable native code debugging** checkbox. You may now close this window, click downward arrow on the debug profile dropdown, and select your new launch profile. Hit the green start button, and your game will begin playing in debug mode." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:194 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:195 msgid "Creating a C# script" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:196 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:197 msgid "After you successfully set up C# for Godot, you should see the following option when selecting **Attach Script** in the context menu of a node in your scene:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:201 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:202 msgid "Note that while some specifics change, most concepts work the same when using C# for scripting. If you're new to Godot, you may want to follow the tutorials on :ref:`doc_scripting` at this point. While some documentation pages still lack C# examples, most notions can be transferred from GDScript." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:208 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:209 msgid "Project setup and workflow" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:210 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:211 msgid "When you create the first C# script, Godot initializes the C# project files for your Godot project. This includes generating a C# solution (``.sln``) and a project file (``.csproj``), as well as some utility files and folders (``.godot/mono``). All of these but ``.godot/mono`` are important and should be committed to your version control system. Everything under ``.godot`` can be safely added to the ignore list of your VCS. When troubleshooting, it can sometimes help to delete the ``.godot/mono`` folder and let it regenerate." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:221 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:222 msgid "Example" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:223 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:224 msgid "Here's a blank C# script with some comments to demonstrate how it works." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:249 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:250 msgid "As you can see, functions normally in global scope in GDScript like Godot's ``print`` function are available in the ``GD`` static class which is part of the ``Godot`` namespace. For a full list of methods in the ``GD`` class, see the class reference pages for :ref:`@GDScript ` and :ref:`@GlobalScope `." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:257 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:258 msgid "Keep in mind that the class you wish to attach to your node should have the same name as the ``.cs`` file. Otherwise, you will get the following error:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:260 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:261 msgid "*\"Cannot find class XXX for script res://XXX.cs\"*" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:265 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:266 msgid "General differences between C# and GDScript" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:267 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:268 msgid "The C# API uses ``PascalCase`` instead of ``snake_case`` in GDScript/C++. Where possible, fields and getters/setters have been converted to properties. In general, the C# Godot API strives to be as idiomatic as is reasonably possible." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:271 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:272 msgid "For more information, see the :ref:`doc_c_sharp_differences` page." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:275 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:276 msgid "You need to (re)build the project assemblies whenever you want to see new exported variables or signals in the editor. This build can be manually triggered by clicking the **Build** button in the top right corner of the editor." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:282 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:283 msgid "You will also need to rebuild the project assemblies to apply changes in \"tool\" scripts." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:286 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:287 msgid "Current gotchas and known issues" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:288 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:289 msgid "As C# support is quite new in Godot, there are some growing pains and things that need to be ironed out. Below is a list of the most important issues you should be aware of when diving into C# in Godot, but if in doubt, also take a look over the official `issue tracker for .NET issues `_." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:294 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:295 msgid "Writing editor plugins is possible, but it is currently quite convoluted." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:295 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:296 msgid "State is currently not saved and restored when hot-reloading, with the exception of exported variables." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:297 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:298 msgid "Attached C# scripts should refer to a class that has a class name that matches the file name." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:299 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:300 msgid "There are some methods such as ``Get()``/``Set()``, ``Call()``/``CallDeferred()`` and signal connection method ``Connect()`` that rely on Godot's ``snake_case`` API naming conventions. So when using e.g. ``CallDeferred(\"AddChild\")``, ``AddChild`` will not work because the API is expecting the original ``snake_case`` version ``add_child``. However, you can use any custom properties or methods without this limitation. Prefer using the exposed ``StringName`` in the ``PropertyName``, ``MethodName`` and ``SignalName`` to avoid extra ``StringName`` allocations and worrying about snake_case naming." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:309 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:310 msgid "As of Godot 4.0, exporting .NET projects is supported for desktop platforms (Linux, Windows and macOS). Other platforms will gain support in future 4.x releases." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:314 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:315 msgid "Common pitfalls" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:316 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:317 msgid "You might encounter the following error when trying to modify some values in Godot objects, e.g. when trying to change the X coordinate of a ``Node2D``:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:332 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:333 msgid "This is perfectly normal. Structs (in this example, a ``Vector2``) in C# are copied on assignment, meaning that when you retrieve such an object from a property or an indexer, you get a copy of it, not the object itself. Modifying said copy without reassigning it afterwards won't achieve anything." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:337 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:338 msgid "The workaround is simple: retrieve the entire struct, modify the value you want to modify, and reassign the property." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:346 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:347 msgid "Since C# 10, it is also possible to use `with expressions `_ on structs, allowing you to do the same thing in a single line." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:353 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:354 msgid "You can read more about this error on the `C# language reference `_." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:356 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:357 msgid "Performance of C# in Godot" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:360 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:361 msgid "For a performance comparison of the languages Godot supports, see :ref:`doc_faq_which_programming_language_is_fastest`." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:363 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:364 msgid "Most properties of Godot C# objects that are based on ``GodotObject`` (e.g. any ``Node`` like ``Control`` or ``Node3D`` like ``Camera3D``) require native (interop) calls as they talk to Godot's C++ core. Consider assigning values of such properties into a local variable if you need to modify or read them multiple times at a single code location:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:399 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:400 msgid "Passing raw arrays (such as ``byte[]``) or ``string`` to Godot's C# API requires marshalling which is comparatively pricey." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:402 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:403 msgid "The implicit conversion from ``string`` to ``NodePath`` or ``StringName`` incur both the native interop and marshalling costs as the ``string`` has to be marshalled and passed to the respective native constructor." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:406 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:407 msgid "Using NuGet packages in Godot" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:408 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:409 msgid "`NuGet `_ packages can be installed and used with Godot, as with any C# project. Many IDEs are able to add packages directly. They can also be added manually by adding the package reference in the ``.csproj`` file located in the project root:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:422 -msgid "As of Godot 3.2.3, Godot automatically downloads and sets up newly added NuGet packages the next time it builds the project." +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:423 +msgid "Godot automatically downloads and sets up newly added NuGet packages the next time it builds the project." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:426 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:427 msgid "Profiling your C# code" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:428 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:429 msgid "The following tools may be used for performance and memory profiling of your managed code:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:430 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:431 msgid "JetBrains Rider with dotTrace/dotMemory plugin." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:431 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:432 msgid "Standalone JetBrains dotTrace/dotMemory." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:432 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:433 msgid "Visual Studio." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:434 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:435 msgid "Profiling managed and unmanaged code at once is possible with both JetBrains tools and Visual Studio, but limited to Windows." msgstr "" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_collections.pot b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_collections.pot index 3cff76d67c..c0fadffb73 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_collections.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_collections.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_differences.pot b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_differences.pot index dbf6f3756f..39a1188ce8 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_differences.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_differences.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_exports.pot b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_exports.pot index e936b66d3a..69aabfdc8f 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_exports.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_exports.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -200,7 +200,7 @@ msgid "Nodes" msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:308 -msgid "Since Godot 4.0, nodes can be directly exported without having to use NodePaths." +msgid "Nodes can also be directly exported without having to use NodePaths." msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:315 diff --git a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_features.pot b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_features.pot index 171ad5c572..39497a371f 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_features.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_features.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_global_classes.pot b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_global_classes.pot index ce2f0b468e..090e856a14 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_global_classes.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_global_classes.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_signals.pot b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_signals.pot index 83068b9aee..21a9eb93cf 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_signals.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_signals.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_style_guide.pot b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_style_guide.pot index a771690c50..1ce774ee33 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_style_guide.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_style_guide.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_variant.pot b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_variant.pot index d1e5c2a3da..85d2369e70 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_variant.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/c_sharp_variant.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0001.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0001.pot index 2190f6a108..1489096e88 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0001.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0001.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0002.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0002.pot index ba32624553..78ccaa14b2 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0002.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0002.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0003.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0003.pot index 6dd1791bec..61b7f3903b 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0003.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0003.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0101.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0101.pot index 9d1ff00673..00f1044847 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0101.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0101.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0102.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0102.pot index a68b77786c..fceb022a20 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0102.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0102.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0103.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0103.pot index 786d183fe7..0b193d2980 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0103.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0103.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0104.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0104.pot index d3f9489284..1f1c1ec673 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0104.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0104.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0105.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0105.pot index 27ed3bb5e2..2e68a3515e 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0105.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0105.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0106.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0106.pot index 45d1abae02..3c0a09e10e 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0106.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0106.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0107.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0107.pot index 9062d0fadd..a552d2f05d 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0107.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0107.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0108.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0108.pot index 1ddc768d51..0dc3303681 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0108.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0108.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0109.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0109.pot index 3296ee432f..affb5efd35 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0109.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0109.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0110.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0110.pot index 60d09261b4..7fe623bb98 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0110.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0110.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0111.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0111.pot index b0c2ebef80..9e437e8239 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0111.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0111.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0201.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0201.pot index b21a82339c..aee3057e20 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0201.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0201.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0202.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0202.pot index 60df761f80..2cf337d585 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0202.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0202.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0203.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0203.pot index c9ff45b22e..c49e670224 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0203.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0203.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0301.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0301.pot index ee19f55387..7068796985 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0301.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0301.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0302.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0302.pot index b3d9e5394e..bf2a128fb5 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0302.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0302.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0303.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0303.pot index 94659ef7d1..1620d64aab 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0303.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0303.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0401.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0401.pot index 6b9670a571..781ca3e97a 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0401.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0401.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0402.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0402.pot index 7079ed5512..32ea8518ed 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0402.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/GD0402.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/index.pot b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/index.pot index d983ad2227..eadfcd2ea4 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/index.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/diagnostics/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/c_sharp/index.pot b/sphinx/templates/tutorials/scripting/c_sharp/index.pot index 2ef55a885c..e89ad0c2ff 100644 --- a/sphinx/templates/tutorials/scripting/c_sharp/index.pot +++ b/sphinx/templates/tutorials/scripting/c_sharp/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/change_scenes_manually.pot b/sphinx/templates/tutorials/scripting/change_scenes_manually.pot index 502d57d468..7611112061 100644 --- a/sphinx/templates/tutorials/scripting/change_scenes_manually.pot +++ b/sphinx/templates/tutorials/scripting/change_scenes_manually.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/cpp/about_godot_cpp.pot b/sphinx/templates/tutorials/scripting/cpp/about_godot_cpp.pot index 2f25461d90..dad49f545d 100644 --- a/sphinx/templates/tutorials/scripting/cpp/about_godot_cpp.pot +++ b/sphinx/templates/tutorials/scripting/cpp/about_godot_cpp.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -104,5 +104,5 @@ msgid "GDExtensions are also only compatible with engine builds that use the sam msgstr "" #: ../../docs/tutorials/scripting/cpp/about_godot_cpp.rst:86 -msgid "Generally speaking, if you build a custom version of Godot, you should generate an ``extension_api.json`` from it for your GDExtensions, because it may have some differences from official Godot builds." +msgid "Generally speaking, if you build a custom version of Godot, you should generate an ``extension_api.json`` from it for your GDExtensions, because it may have some differences from official Godot builds. You can learn more about the process of using custom ``extension_api.json`` files in the :ref:`build system section `." msgstr "" diff --git a/sphinx/templates/tutorials/scripting/cpp/build_system/cmake.pot b/sphinx/templates/tutorials/scripting/cpp/build_system/cmake.pot new file mode 100644 index 0000000000..04d67a3ea7 --- /dev/null +++ b/sphinx/templates/tutorials/scripting/cpp/build_system/cmake.pot @@ -0,0 +1,342 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine latest\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:4 +msgid "Secondary build system: Working with CMake" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:8 +msgid "This page documents how to compile godot-cpp. If you're looking to compile Godot instead, see :ref:`doc_introduction_to_the_buildsystem`." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:11 +msgid "Beside the SCons_ based build system, godot-cpp also provides a CMakeLists.txt_ file to support users that prefer using CMake_ over SCons for their build system." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:15 +msgid "While actively supported, the CMake system is considered secondary to the SCons build system. This means it may lack some features that are available to projects using SCons." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:24 +msgid "Introduction" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:26 +msgid "Compiling godot-cpp independently of an extension project is mainly for godot-cpp developers, package maintainers, and CI/CD." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:29 +msgid "Examples of how to use CMake to consume the godot-cpp library as part of an extension project:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:32 +msgid "`godot-cpp-template `__" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:33 +msgid "`godot_roguelite `__" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:34 +msgid "`godot-orchestrator `__" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:36 +msgid "Examples for configuring godot-cpp are listed at the bottom of the page, many of which may help with configuring your project." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:40 +msgid "CMake's ``Debug`` vs Godot's ``template_debug``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:42 +msgid "Something that has come up during many discussions is the conflation of a compilation of C++ source code with debug symbols enabled, and compiling a Godot extension with debug features enabled. The two concepts are not mutually exclusive." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:48 +msgid "Debug Features" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:50 +msgid "Enables a pre-processor definition to selectively compile code to help users of a Godot extension with their own project." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:53 +msgid "Debug features are enabled in ``editor`` and ``template_debug`` builds, which can be specified during the configure phase like so:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:61 +msgid "Debug" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:63 +msgid "Sets compiler flags so that debug symbols are generated to help godot extension developers debug their extension." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:66 +msgid "``Debug`` is the default build type for CMake projects, the way to select another depends on the generator used:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:69 +msgid "For single configuration generators, add ``-DCMAKE_BUILD_TYPE=`` to the configure command." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:71 +msgid "For multi-config generators, add ``--config `` to the build command." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:73 +msgid "Where ```` is one of ``Debug``, ``Release``, ``RelWithDebInfo``, and ``MinSizeRel``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:77 +msgid "SCons Deviations" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:79 +msgid "Not all code from the SCons system can be perfectly represented in CMake, here are the notable differences:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:82 +msgid "``debug_symbols``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:84 +msgid "Is no longer an explicit option, and is enabled when using CMake build configurations; ``Debug``, ``RelWithDebInfo``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:87 +msgid "``dev_build``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:89 +msgid "Does not define ``NDEBUG`` when disabled, ``NDEBUG`` is set when using CMake build configurations; ``Release``, ``MinSizeRel``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:92 +msgid "``arch``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:94 +msgid "CMake sets the architecture via the toolchain files, macOS universal is controlled via the ``CMAKE_OSX_ARCHITECTURES`` property which is copied to targets when they are defined." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:98 +msgid "``debug_crt``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:100 +msgid "CMake controls linking to Windows runtime libraries by copying the value of ``CMAKE_MSVC_RUNTIME_LIBRARIES`` to targets as they are defined. godot-cpp will set this variable if it isn't already set. So, include it before other dependencies to have the value propagate across the projects." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:106 +msgid "Basic Walk-Through" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:109 +msgid "Clone the git repository" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:118 +msgid "Configure the build" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:124 +msgid "``-S`` Specifies the source directory as ``godot-cpp``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:125 +msgid "``-B`` Specifies the build directory as ``cmake-build``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:126 +msgid "``-G`` Specifies the Generator as ``Ninja``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:128 +msgid "The source directory in this example is the source root for the freshly cloned godot-cpp. CMake will also interpret the first path in the command as the source path, or if an existing build path is specified it will deduce the source path from the build cache." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:133 +msgid "The following three commands are equivalent:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:146 +msgid "The build directory is specified so that generated files do not clutter the source tree with build artifacts." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:149 +msgid "CMake doesn't build the code, it generates the files that a build tool uses, in this case the ``Ninja`` generator creates Ninja_ build files." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:152 +msgid "To see the list of generators run ``cmake --help``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:157 +msgid "Build Options" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:159 +msgid "To list the available options use the ``-L[AH]`` command flags. ``A`` is for advanced, and ``H`` is for help strings:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:166 +msgid "Options are specified on the command line when configuring, for example:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:174 +msgid "See setting-build-variables_ and build-configurations_ for more information." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:180 +msgid "A non-exhaustive list of options:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:203 +msgid "Compiling" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:205 +msgid "Tell CMake to invoke the build system it generated in the specified directory. The default target is ``template_debug`` and the default build configuration is Debug." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:214 +msgid "Examples" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:216 +msgid "These examples, while intended for godot-cpp developers, package maintainers, and CI/CD may help you configure your own extension project." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:219 +msgid "Practical examples for how to consume the godot-cpp library as part of an extension project are listed in the `Introduction`_." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:223 +msgid "Enabling Integration Testing" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:225 +msgid "The testing target ``godot-cpp-test`` is guarded by ``GODOTCPP_ENABLE_TESTING`` which is off by default." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:228 +msgid "To configure and build the godot-cpp project to enable the integration testing targets the command will look something like:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:237 +msgid "Windows and MSVC - Release" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:239 +msgid "So long as CMake is installed from the `CMake Downloads`_ page and in the PATH, and Microsoft Visual Studio is installed with C++ support, CMake will detect the MSVC compiler." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:243 +msgid "Note that Visual Studio is a Multi-Config Generator so the build configuration needs to be specified at build time, for example, ``--config Release``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:254 +msgid "MSys2/clang64, \"Ninja\" - Debug" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:256 +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:272 +msgid "Assumes the ``ming-w64-clang-x86_64``-toolchain is installed." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:258 +msgid "Note that Ninja is a Single-Config Generator so the build type needs to be specified at configuration time." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:261 +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:277 +msgid "Using the ``msys2/clang64`` shell:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:270 +msgid "MSys2/clang64, \"Ninja Multi-Config\" - dev_build, Debug Symbols" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:274 +msgid "This time we are choosing the 'Ninja Multi-Config' generator, so the build type is specified at build time." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:286 +msgid "Emscripten for web platform" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:288 +msgid "This has only been tested on Windows so far. You can use this example workflow:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:290 +msgid "Clone and install the latest Emscripten tools to ``c:\\emsdk``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:291 +msgid "Use ``C:\\emsdk\\emsdk.ps1 activate latest`` to enable the environment from powershell in the current shell." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:293 +msgid "The ``emcmake.bat`` utility adds the emscripten toolchain to the CMake command. It can also be added manually; the location is listed inside the ``emcmake.bat`` file" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:304 +msgid "Android Cross Compile from Windows" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:306 +msgid "There are two separate paths you can choose when configuring for android." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:308 +msgid "Use the ``CMAKE_ANDROID_*`` variables specified on the command line or in your own toolchain file as listed in the cmake-toolchains_ documentation." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:313 +msgid "Or use the toolchain and scripts provided by the Android SDK and make changes using the ``ANDROID_*`` variables listed there. Where ```` is whatever NDK version you have installed (tested with `28.1.13356709`) and ```` is for the Android sdk platform, (tested with ``android-29``)." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:320 +msgid "The Android SDK website_ explicitly states that they do not support using the CMake built-in method, and recommends you stick with their toolchain files." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:327 +msgid "Using your own toolchain file" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:329 +msgid "As described in the CMake documentation:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:336 +msgid "Doing the equivalent just using the command line:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:348 +msgid "Using the Android SDK toolchain file" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:350 +msgid "This defaults to the minimum supported version and armv7-a:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:358 +msgid "Specifying the Android platform and ABI:" +msgstr "" diff --git a/sphinx/templates/tutorials/scripting/cpp/build_system/index.pot b/sphinx/templates/tutorials/scripting/cpp/build_system/index.pot new file mode 100644 index 0000000000..474704a5d8 --- /dev/null +++ b/sphinx/templates/tutorials/scripting/cpp/build_system/index.pot @@ -0,0 +1,20 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine latest\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/scripting/cpp/build_system/index.rst:2 +msgid "Build system" +msgstr "" diff --git a/sphinx/templates/tutorials/scripting/cpp/build_system/scons.pot b/sphinx/templates/tutorials/scripting/cpp/build_system/scons.pot new file mode 100644 index 0000000000..e9d3838664 --- /dev/null +++ b/sphinx/templates/tutorials/scripting/cpp/build_system/scons.pot @@ -0,0 +1,144 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine latest\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:4 +msgid "Main build system: Working with SCons" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:6 +msgid "This page documents how to compile godot-cpp. If you're looking to compile Godot instead, see :ref:`doc_introduction_to_the_buildsystem`." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:9 +msgid "`godot-cpp `__ uses `SCons `__ as its main build system. It is modeled after :ref:`Godot's build system `, and some commands available there are also available in godot-cpp projects." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:14 +msgid "Getting started" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:16 +msgid "To build a godot-cpp project, it is generally sufficient to install `SCons `__, and simply run it in the project directory:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:19 +msgid "scons" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:21 +msgid "You may want to learn about available options:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:23 +msgid "scons --help" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:25 +msgid "To cleanly re-build your project, add ``--clean`` to your build command:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:27 +msgid "scons --clean" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:29 +msgid "You can find more information about common SCons arguments and build patterns in the `SCons User Guide `__. Additional commands may be added by individual godot-cpp projects, so consult their specific documentation for more information on those." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:34 +msgid "Configuring an IDE" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:36 +msgid "Most IDEs can use a ``compile_commands.json`` file to understand a C++ project. You can generate it with godot-cpp using the following command:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:47 +msgid "For more information, please check out the :ref:`IDE configuration guides `. Although written for Godot engine contributors, they are largely applicable to godot-cpp projects as well." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:51 +msgid "Loading your GDExtension in Godot" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:53 +msgid "Godot loads GDExtensions by finding :ref:`.gdextension ` files in the project directory. ``.gdextension`` files are used to select and load a binary compatible with the current computer / operating system." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:56 +msgid "The `godot-cpp-template `__, as well as the :ref:`Getting Started section `, provide example ``.gdextension`` files for GDExtensions that are widely compatible to many different systems." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:61 +msgid "Building for multiple platforms" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:63 +msgid "GDExtensions are expected to run on many different systems, each with separate binaries and build configurations. If you are planning to publish your GDExtension, we recommend you provide binaries for all configurations that are mentioned in the `godot-cpp-template `__ `.gdextension file `__." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:68 +msgid "There are two popular ways by which cross platform builds can be achieved:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:70 +msgid "Cross-platform build tools" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:71 +msgid "Continuous Integration (CI)" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:73 +msgid "`godot-cpp-template `__ contains an `example setup `__ for a GitHub based CI workflow." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:78 +msgid "Using a custom API file" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:80 +msgid "Every branch of godot-cpp comes with an API file (``extension_api.json``) appropriate for the respective Godot version (e.g. the ``4.3`` branch comes with the API file compatible with Godot version ``4.3`` and later)." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:84 +msgid "However, you may want to use a custom ``extension_api.json``, for example:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:86 +msgid "If you want to use the latest APIs from Godot ``master``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:87 +msgid "If you :ref:`build Godot yourself ` with different options than the official builds (e.g. ``disable_3d=yes`` or ``precision=double``)." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:88 +msgid "If you want to use APIs exposed by custom modules." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:90 +msgid "To use a custom API file, you first have to generate it from the appropriate Godot executable:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:97 +msgid "The resulting ``extension_api.json`` file will be created in the executable's directory. To use it, you can add ``custom_api_file`` to your build command:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:104 +msgid "Alternatively, you can add it as the default API file to your project by adding the following line to your SConstruct file:" +msgstr "" diff --git a/sphinx/templates/tutorials/scripting/cpp/core_types.pot b/sphinx/templates/tutorials/scripting/cpp/core_types.pot new file mode 100644 index 0000000000..0f6ae68bfe --- /dev/null +++ b/sphinx/templates/tutorials/scripting/cpp/core_types.pot @@ -0,0 +1,116 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine latest\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:4 +msgid "Core functions and types" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:6 +msgid "godot-cpp's API is designed to be as similar as possible to Godot's internal API." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:8 +msgid "This means that, in general, you can use the :ref:`Engine details ` section to learn how to work with godot-cpp. In addition, it can often be useful to browse the `engine's code `__ for examples for how to work with Godot's API." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:12 +msgid "That being said, there are some differences to be aware of, which are documented here." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:15 +msgid "Common functions and macros" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:17 +msgid "Please refer to :ref:`doc_common_engine_methods_and_macros` for information on this. The functions and macros documented there are also available in godot-cpp." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:21 +msgid "Core types" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:23 +msgid "Godot's :ref:`Core types ` are also available in godot-cpp, and the same recommendations apply as described in that article. The types are regularly synchronized with the Godot codebase." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:26 +msgid "In your own code, you can also use `C++ STL types `__, or types from any library you choose, but they won't be compatible with Godot's APIs." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:30 +msgid "Packed arrays" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:32 +msgid "While in Godot, the ``Packed*Array`` types are aliases of ``Vector``, in godot-cpp, they're their own types, using the Godot bindings. This is because ``Packed*Array`` are exposed to Godot and limited to only Godot types, whereas ``Vector`` can hold any C++ type which Godot might not be able to understand." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:36 +msgid "In general, the ``Packed*Array`` types work the same way as their ``Vector`` aliases, however, there are some notable differences." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:40 +msgid "Data access" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:42 +msgid "``Vector`` keeps its data entirely within the GDExtension, whereas the ``Packed*Array`` types keep their data on the Godot side. This means that any time a ``Packed*Array`` is accessed, it needs to call into Godot." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:45 +msgid "To efficiently read or write a large amount of data into a ``Packed*Array``, you should call ``.ptr()`` (for reading) or ``.ptrw()`` (for writing) to get a pointer directly to the array's memory:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:72 +msgid "Copying" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:74 +msgid "``Variant`` wrappers for ``Packed*Array`` treat them as pass-by-reference, while the ``Packed*Array`` types themselves are pass-by-value (implemented as copy-on-write)." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:77 +msgid "In addition, it may be of interest that GDScript calls use the ``Variant`` call interface: Any ``Packed*Array`` arguments to your functions will be passed in a ``Variant``, and unpacked from there. This can create copies of the types, so the argument you receive may be a copy of the argument that the function was called with. In practice, this means you cannot rely on that the argument passed to you can be modified at the caller's site." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:83 +msgid "Variant class" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:85 +msgid "Please refer to :ref:`doc_variant_class` to learn about how to work with ``Variant``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:87 +msgid "Most importantly, you should be aware that all functions exposed through the GDExtension API must be compatible with ``Variant``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:91 +msgid "Object class" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:93 +msgid "Please refer to :ref:`doc_object_class` to learn how to register and work with your own ``Object`` types." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:95 +msgid "We are not aware of any major differences between the godot-cpp ``Object`` API and Godot's internal ``Object`` API, except that some methods are available in Godot's internal API that are not available in godot-cpp." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:98 +msgid "You should be aware that the pointer to your godot-cpp ``Object`` is different from the pointer that Godot uses internally. This is because the godot-cpp version is an extension instance, allocated separately from the original ``Object``. However, in practice, this difference is usually not noticeable." +msgstr "" diff --git a/sphinx/templates/tutorials/scripting/cpp/gdextension_cpp_example.pot b/sphinx/templates/tutorials/scripting/cpp/gdextension_cpp_example.pot index 9649f6f630..4fdbea1b06 100644 --- a/sphinx/templates/tutorials/scripting/cpp/gdextension_cpp_example.pot +++ b/sphinx/templates/tutorials/scripting/cpp/gdextension_cpp_example.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -124,317 +124,281 @@ msgid "This will initialize the repository in your project folder." msgstr "" #: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:101 -msgid "Building the C++ bindings" -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:103 -msgid "Now that we've downloaded our prerequisites, it is time to build the C++ bindings." -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:106 -msgid "The repository contains a copy of the metadata for the current Godot release, but if you need to build these bindings for a newer version of Godot, call the Godot executable:" -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:114 -msgid "The resulting ``extension_api.json`` file will be created in the executable's directory. Copy it to the project folder and add ``custom_api_file=`` to the scons command below." -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:118 -msgid "To generate and compile the bindings, use this command (replacing ```` with ``windows``, ``linux`` or ``macos`` depending on your OS):" -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:121 -msgid "The build process automatically detects the number of CPU threads to use for parallel builds. To specify a number of CPU threads to use, add ``-jN`` at the end of the SCons command line where ``N`` is the number of CPU threads to use." -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:131 -msgid "This step will take a while. When it is completed, you should have static libraries that can be compiled into your project stored in ``godot-cpp/bin/``." -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:136 -msgid "You may need to add ``bits=64`` to the command on Windows or Linux." -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:139 msgid "Creating a simple plugin" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:141 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:103 msgid "Now it's time to build an actual plugin. We'll start by creating an empty Godot project in which we'll place a few files." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:144 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:106 msgid "Open Godot and create a new project. For this example, we will place it in a folder called ``demo`` inside our GDExtension's folder structure." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:147 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:109 msgid "In our demo project, we'll create a scene containing a Node called \"Main\" and we'll save it as ``main.tscn``. We'll come back to that later." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:150 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:112 msgid "Back in the top-level GDExtension module folder, we're also going to create a subfolder called ``src`` in which we'll place our source files." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:153 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:115 msgid "You should now have ``demo``, ``godot-cpp``, and ``src`` directories in your GDExtension module." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:156 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:118 msgid "Your folder structure should now look like this:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:168 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:130 msgid "In the ``src`` folder, we'll start with creating our header file for the GDExtension node we'll be creating. We will name it ``gdexample.h``:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:171 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:133 msgid "gdextension_cpp_example/src/gdexample.h" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:198 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:160 msgid "There are a few things of note to the above. We include ``sprite2d.hpp`` which contains bindings to the Sprite2D class. We'll be extending this class in our module." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:202 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:164 msgid "We're using the namespace ``godot``, since everything in GDExtension is defined within this namespace." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:205 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:167 msgid "Then we have our class definition, which inherits from our Sprite2D through a container class. We'll see a few side effects of this later on. The ``GDCLASS`` macro sets up a few internal things for us." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:209 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:171 msgid "After that, we declare a single member variable called ``time_passed``." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:211 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:173 msgid "In the next block we're defining our methods, we have our constructor and destructor defined, but there are two other functions that will likely look familiar to some, and one new method." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:215 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:177 msgid "The first is ``_bind_methods``, which is a static function that Godot will call to find out which methods can be called and which properties it exposes. The second is our ``_process`` function, which will work exactly the same as the ``_process`` function you're used to in GDScript." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:220 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:182 msgid "Let's implement our functions by creating our ``gdexample.cpp`` file:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:222 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:184 msgid "gdextension_cpp_example/src/gdexample.cpp" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:250 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:212 msgid "This one should be straightforward. We're implementing each method of our class that we defined in our header file." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:253 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:215 msgid "Note our ``_process`` function, which keeps track of how much time has passed and calculates a new position for our sprite using a sine and cosine function." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:256 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:218 msgid "There is one more C++ file we need; we'll name it ``register_types.cpp``. Our GDExtension plugin can contain multiple classes, each with their own header and source file like we've implemented ``GDExample`` up above. What we need now is a small bit of code that tells Godot about all the classes in our GDExtension plugin." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:262 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:224 msgid "gdextension_cpp_example/src/register_types.cpp" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:302 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:264 msgid "The ``initialize_example_module`` and ``uninitialize_example_module`` functions get called respectively when Godot loads our plugin and when it unloads it. All we're doing here is parse through the functions in our bindings module to initialize them, but you might have to set up more things depending on your needs. We call the ``GDREGISTER_RUNTIME_CLASS`` macro for each of our classes in our library. This will make them run only in game, like the default for GDScript." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:309 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:271 msgid "The important function is the third function called ``example_library_init``. We first call a function in our bindings library that creates an initialization object. This object registers the initialization and termination functions of the GDExtension. Furthermore, it sets the level of initialization (core, servers, scene, editor, level)." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:314 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:276 msgid "At last, we need the header file for the ``register_types.cpp`` named ``register_types.h``." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:317 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:279 msgid "gdextension_cpp_example/src/register_types.h" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:330 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:292 msgid "Compiling the plugin" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:332 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:294 msgid "To compile the project we need to define how SCons using should compile it using an ``SConstruct`` file which references the one in ``godot-cpp``. Writing it from scratch is outside the scope of this tutorial, but you can :download:`the SConstruct file we prepared `. We'll cover a more customizable, detailed example on how to use these build files in a subsequent tutorial." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:341 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:303 msgid "This ``SConstruct`` file was written to be used with the latest ``godot-cpp`` master, you may need to make small changes using it with older versions or refer to the ``SConstruct`` file in the Godot 4.x documentation." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:345 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:307 msgid "Once you've downloaded the ``SConstruct`` file, place it in your GDExtension folder structure alongside ``godot-cpp``, ``src`` and ``demo``, then run:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:352 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:314 msgid "You should now be able to find the module in ``demo/bin/``." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:354 -msgid "When building for iOS, package the module as a static `.xcframework`, you can use following commands to do so:" -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:369 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:318 msgid "Here, we've compiled both godot-cpp and our gdexample library as debug builds. For optimized builds, you should compile them using the ``target=template_release`` switch." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:374 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:323 msgid "Using the GDExtension module" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:376 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:325 msgid "Before we jump back into Godot, we need to create one more file in ``demo/bin/``." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:379 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:328 msgid "This file lets Godot know what dynamic libraries should be loaded for each platform and the entry function for the module. It is called ``gdexample.gdextension``." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:419 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:354 msgid "This file contains a ``configuration`` section that controls the entry function of the module. You should also set the minimum compatible Godot version with ``compatibility_minimum``, which prevents older version of Godot from trying to load your extension. The ``reloadable`` flag enables automatic reloading of your extension by the editor every time you recompile it, without needing to restart the editor. This only works if you compile your extension in debug mode (default)." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:425 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:360 msgid "The ``libraries`` section is the important bit: it tells Godot the location of the dynamic library in the project's filesystem for each supported platform. It will also result in *just* that file being exported when you export the project, which means the data pack won't contain libraries that are incompatible with the target platform." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:431 -msgid "Finally, the ``dependencies`` section allows you to name additional dynamic libraries that should be included as well. This is important when your GDExtension plugin implements someone else's library and requires you to supply a third-party dynamic library with your project." +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:366 +msgid "You can learn more about ``.gdextension`` files at :ref:`doc_gdextension_file`." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:436 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:368 msgid "Here is another overview to check the correct file structure:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:459 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:391 msgid "Time to jump back into Godot. We load up the main scene we created way back in the beginning and now add a newly available GDExample node to the scene:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:464 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:396 msgid "We're going to assign the Godot logo to this node as our texture, disable the ``centered`` property:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:469 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:401 msgid "We're finally ready to run the project:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:479 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:411 msgid "Adding properties" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:481 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:413 msgid "GDScript allows you to add properties to your script using the ``export`` keyword. In GDExtension you have to register the properties with a getter and setter function or directly implement the ``_get_property_list``, ``_get`` and ``_set`` methods of an object (but that goes far beyond the scope of this tutorial)." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:487 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:419 msgid "Lets add a property that allows us to control the amplitude of our wave." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:489 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:421 msgid "In our ``gdexample.h`` file we need to add a member variable and getter and setter functions:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:504 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:436 msgid "In our ``gdexample.cpp`` file we need to make a number of changes, we will only show the methods we end up changing, don't remove the lines we're omitting:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:541 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:473 msgid "Once you compile the module with these changes in place, you will see that a property has been added to our interface. You can now change this property and when you run your project, you will see that our Godot icon travels along a larger figure." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:546 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:478 msgid "Let's do the same but for the speed of our animation and use a setter and getter function. Our ``gdexample.h`` header file again only needs a few more lines of code:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:561 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:493 msgid "This requires a few more changes to our ``gdexample.cpp`` file, again we're only showing the methods that have changed so don't remove anything we're omitting:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:601 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:533 msgid "Now when the project is compiled, we'll see another property called speed. Changing its value will make the animation go faster or slower. Furthermore, we added a property range which describes in which range the value can be. The first two arguments are the minimum and maximum value and the third is the step size." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:608 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:540 msgid "For simplicity, we've only used the hint_range of the property method. There are a lot more options to choose from. These can be used to further configure how properties are displayed and set on the Godot side." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:613 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:545 msgid "Signals" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:615 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:547 msgid "Last but not least, signals fully work in GDExtension as well. Having your extension react to a signal given out by another object requires you to call ``connect`` on that object. We can't think of a good example for our wobbling Godot icon, we would need to showcase a far more complete example." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:620 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:552 msgid "This is the required syntax:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:626 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:558 msgid "To connect our signal ``the_signal`` from some other node with our method ``my_method``, we need to provide the ``connect`` method with the name of the signal and a ``Callable``. The ``Callable`` holds information about an object on which a method can be called. In our case, it associates our current object instance ``this`` with the method ``my_method`` of the object. Then the ``connect`` method will add this to the observers of ``the_signal``. Whenever ``the_signal`` is now emitted, Godot knows which method of which object it needs to call." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:634 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:566 msgid "Note that you can only call ``my_method`` if you've previously registered it in your ``_bind_methods`` method. Otherwise Godot will not know about the existence of ``my_method``." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:638 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:570 msgid "To learn more about ``Callable``, check out the class reference here: :ref:`Callable `." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:640 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:572 msgid "Having your object sending out signals is more common. For our wobbling Godot icon, we'll do something silly just to show how it works. We're going to emit a signal every time a second has passed and pass the new location along." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:644 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:576 msgid "In our ``gdexample.h`` header file, we need to define a new member ``time_emit``:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:654 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:586 msgid "This time, the changes in ``gdexample.cpp`` are more elaborate. First, you'll need to set ``time_emit = 0.0;`` in either our ``_init`` method or in our constructor. We'll look at the other 2 needed changes one by one." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:658 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:590 msgid "In our ``_bind_methods`` method, we need to declare our signal. This is done as follows:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:670 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:602 msgid "Here, our ``ADD_SIGNAL`` macro can be a single call with a ``MethodInfo`` argument. ``MethodInfo``'s first parameter will be the signal's name, and its remaining parameters are ``PropertyInfo`` types which describe the essentials of each of the method's parameters. ``PropertyInfo`` parameters are defined with the data type of the parameter, and then the name that the parameter will have by default." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:676 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:608 msgid "So here, we add a signal, with a ``MethodInfo`` which names the signal \"position_changed\". The ``PropertyInfo`` parameters describe two essential arguments, one of type ``Object``, the other of type ``Vector2``, respectively named \"node\" and \"new_pos\"." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:680 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:612 msgid "Next, we'll need to change our ``_process`` method:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:702 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:634 msgid "After a second has passed, we emit our signal and reset our counter. We can add our parameter values directly to ``emit_signal``." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:705 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:637 msgid "Once the GDExtension library is compiled, we can go into Godot and select our sprite node. In the **Node** dock, we can find our new signal and link it up by pressing the **Connect** button or double-clicking the signal. We've added a script on our main node and implemented our signal like this:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:717 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:649 msgid "Every second, we output our position to the console." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:720 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:652 msgid "Next steps" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:722 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:654 msgid "We hope the above example showed you the basics. You can build upon this example to create full-fledged scripts to control nodes in Godot using C++!" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:725 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:657 msgid "Instead of basing your project off the above example setup, we recommend to restart now by cloning the `godot-cpp template `__, and base your project off of that. It has better coverage of features, such as a GitHub build action and additional useful ``SConstruct`` boilerplate." msgstr "" diff --git a/sphinx/templates/tutorials/scripting/cpp/gdextension_docs_system.pot b/sphinx/templates/tutorials/scripting/cpp/gdextension_docs_system.pot index cc87d70bcc..addb78b1ab 100644 --- a/sphinx/templates/tutorials/scripting/cpp/gdextension_docs_system.pot +++ b/sphinx/templates/tutorials/scripting/cpp/gdextension_docs_system.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/cpp/index.pot b/sphinx/templates/tutorials/scripting/cpp/index.pot index b4dba92627..273c97b692 100644 --- a/sphinx/templates/tutorials/scripting/cpp/index.pot +++ b/sphinx/templates/tutorials/scripting/cpp/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/creating_script_templates.pot b/sphinx/templates/tutorials/scripting/creating_script_templates.pot index c7abadf93f..9b0ed5a087 100644 --- a/sphinx/templates/tutorials/scripting/creating_script_templates.pot +++ b/sphinx/templates/tutorials/scripting/creating_script_templates.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/cross_language_scripting.pot b/sphinx/templates/tutorials/scripting/cross_language_scripting.pot index 99e720ed5e..0dd32db86b 100644 --- a/sphinx/templates/tutorials/scripting/cross_language_scripting.pot +++ b/sphinx/templates/tutorials/scripting/cross_language_scripting.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/debug/custom_performance_monitors.pot b/sphinx/templates/tutorials/scripting/debug/custom_performance_monitors.pot index 6f98fdecaf..e85c37a7ff 100644 --- a/sphinx/templates/tutorials/scripting/debug/custom_performance_monitors.pot +++ b/sphinx/templates/tutorials/scripting/debug/custom_performance_monitors.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -28,7 +28,7 @@ msgid "As explained in the :ref:`doc_debugger_panel` documentation, Godot featur msgstr "" #: ../../docs/tutorials/scripting/debug/custom_performance_monitors.rst:14 -msgid "Since Godot 4.0, you can declare custom values to be displayed in the Monitors tab. Example use cases for custom performance monitors include:" +msgid "Godot lets you declare custom values to be displayed in the Monitors tab. Example use cases for custom performance monitors include:" msgstr "" #: ../../docs/tutorials/scripting/debug/custom_performance_monitors.rst:17 diff --git a/sphinx/templates/tutorials/scripting/debug/debugger_panel.pot b/sphinx/templates/tutorials/scripting/debug/debugger_panel.pot index 08c9e9e736..ec19679d73 100644 --- a/sphinx/templates/tutorials/scripting/debug/debugger_panel.pot +++ b/sphinx/templates/tutorials/scripting/debug/debugger_panel.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/debug/index.pot b/sphinx/templates/tutorials/scripting/debug/index.pot index 8c19e7829f..4957a40151 100644 --- a/sphinx/templates/tutorials/scripting/debug/index.pot +++ b/sphinx/templates/tutorials/scripting/debug/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/debug/objectdb_profiler.pot b/sphinx/templates/tutorials/scripting/debug/objectdb_profiler.pot new file mode 100644 index 0000000000..64d6b1bbd9 --- /dev/null +++ b/sphinx/templates/tutorials/scripting/debug/objectdb_profiler.pot @@ -0,0 +1,242 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine latest\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:4 +msgid "Using the ObjectDB profiler" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:6 +msgid "Since Godot 4.6, there is a new **ObjectDB Profiler** tab in the Debugger bottom panel. This profiler allows you to take snapshots of the current state of the ObjectDB, which is the database that contains all the :ref:`class_object`-derived classes currently allocated in memory. This is useful for identifying memory leaks and understanding the memory usage of your project." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:12 +msgid "Additionally, this tool is able to visualize differences between two snapshots. This can be used to identify improvements or regressions in memory usage after making changes to your project. Reducing memory usage can lead to better performance, even in cases where memory is not a bottleneck. By reducing memory usage, you can perform fewer allocations, which can be a costly operation, especially if performed in large amounts during gameplay." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:21 +msgid "See :ref:`doc_node_alternatives` for information on using lighter-weight alternatives to nodes, which can help reduce memory usage in your project." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:26 +msgid "The ObjectDB profiler does **not** track every bit of memory used by the engine or by external libraries. Native engine classes that are not exposed to the scripting API will not appear in snapshots." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:30 +msgid "Consider using external memory profiling tools if you need access to this information." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:33 +msgid "Usage" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:35 +msgid "Open the ObjectDB Profiler tab in the :menu:`Debugger` bottom panel. You will land on the summary page with no snapshots taken yet." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:38 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:42 +msgid "ObjectDB profiler summary with no snapshots taken" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:44 +msgid "Run the project, then get to a point where you'd like to take a snapshot (for example, after loading a level). Click :button:`Take ObjectDB Snapshot` to take a snapshot at the current point in time. If the button appears grayed out, make sure the project is running first." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:49 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:53 +msgid "ObjectDB profiler summary with one snapshot taken" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:55 +msgid "You can take multiple snapshots during a single run of the project. Also, you can right-click a snapshot in the snapshot list to rename it, show it in the file manager, or delete it." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:61 +msgid "It's a good idea to rename snapshots after taking them to give them descriptive names (e.g., ``before_optimization``, ``after_optimization``). Regardless of the name, the date at which the snapshot was taken remains saved in the snapshot file itself." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:66 +msgid "Snapshot files have a ``.odb_snapshot`` extension and are located in ``user://objectdb_snapshots/`` (see :ref:`Data paths ` details). These can safely be copied across devices, as they're platform-independent." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:71 +msgid "Viewing differences between snapshots" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:73 +msgid "After taking at least two snapshots, the :menu:`Diff Against` dropdown becomes available. Here, you can select another snapshot to compare the currently selected snapshot with." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:77 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:81 +msgid "Diff Against dropdown in the bottom-left corner of the ObjectDB profiler" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:83 +msgid "The summary page will then show the differences between the two snapshots:" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:85 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:89 +msgid "Two snapshots being compared in the Summary tab" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:91 +msgid "This also applies to every other tab in the ObjectDB profiler, which will show the differences between the two snapshots in additional columns." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:95 +msgid "Classes" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:97 +msgid "In the Classes tab, you can view how many instances of each class have been created at the moment the snapshot was taken:" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:100 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:104 +msgid "One snapshots being viewed in the Classes tab" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:106 +msgid "When in diff mode, it will show the class instance count for the currently selected snapshot (column A) and the snapshot that is being diffed against (column B). It will also show the difference in instance count in the column Delta." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:110 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:114 +msgid "Two snapshots being compared in the Classes tab. Here, column A is ``second_session``, column B is ``first_session``" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:116 +msgid "You can click on a class in the list on the right to view it in the inspector." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:118 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:122 +msgid "A selected class instance being viewed in the inspector" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:126 +msgid "Previewing instances in the inspector is also available in other tabs (Nodes, Objects, and RefCounted)." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:130 +msgid "Objects" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:132 +msgid "The Objects tab is similar, but differs in the way it presents data. Here, every instance is listed in a linear fashion, instead of grouping them by class. When selecting an object, you will see a list of other objects it references on the right (:menu:`Outbound References`), as well as a list of objects it's being referenced by (:menu:`Inbound References`)." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:138 +msgid "This allows you to view objects either in a \"top-down\" manner (viewing what objects a given object references) or in a \"bottom-up\" manner (viewing what objects reference a given object)." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:142 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:146 +msgid "The Objects tab being used to view objects in a \"top-down\" manner" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:148 +msgid "In the above image, clicking the ``default_font`` object in the list will switch the view to the perspective of that object. This object is being referenced by a lot of other objects as well, which effectively switches to a \"bottom-up\" perspective." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:153 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:157 +msgid "The Objects tab being used to view objects in a \"bottom-up\" manner" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:160 +msgid "Nodes" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:162 +msgid "Next, the Nodes tab shows the scene tree at the time the snapshot was taken." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:164 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:168 +msgid "The Nodes tab being used to view the scene tree" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:170 +msgid "This tab is particularly interesting in diff view, since it supports showing the difference between the two snapshots in a more visual manner. When :button:`Combined Diff` is unchecked, you can see the differences side by side." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:174 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:178 +msgid "Separate diff view in the Nodes tab" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:180 +msgid "When :button:`Combined Diff` is checked, you can see the differences merged into a single tree, with added nodes highlighted in green and removed nodes highlighted in red." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:184 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:188 +msgid "Combined diff view in the Nodes tab" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:190 +msgid "Additionally, you can view a list of orphan nodes (nodes that are not attached to the scene tree root) at the end of the tree view. You can view it more easily by collapsing the root node, since these are listed outside the main scene tree." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:195 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:199 +msgid "Orphan nodes at the end of the nodes tree in the ObjectDB profiler" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:202 +msgid "RefCounted" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:204 +msgid "The last tab is the RefCounted tab. This tab is similar to the Objects tab, but it shows the reference counts of :ref:`class_refcounted`-derived classes directly in the table. The table has four columns:" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:208 +msgid "**Native Refs:** The number of native engine references to the object." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:209 +msgid "**ObjectDB Refs:** The number of ObjectDB references to the object." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:210 +msgid "**Total Refs:** The sum of native references and ObjectDB references." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:211 +msgid "**ObjectDB Cycles:** The number of circular references detected." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:213 +msgid "When in diff view, snapshot B is always listed *above* snapshot A if a RefCounted instance exists in both snapshots." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:216 +msgid "The list on the right shows details on the selected instance, including a list of references and whether these are duplicates." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:219 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:223 +msgid "The RefCounted tab being used to view RefCounted instances" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:227 +msgid "The RefCounted tab does **not** list objects that derive directly from :ref:`class_object`, as these don't use reference counting." +msgstr "" diff --git a/sphinx/templates/tutorials/scripting/debug/output_panel.pot b/sphinx/templates/tutorials/scripting/debug/output_panel.pot index f5a5b57fcc..606accbfb0 100644 --- a/sphinx/templates/tutorials/scripting/debug/output_panel.pot +++ b/sphinx/templates/tutorials/scripting/debug/output_panel.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/debug/overview_of_debugging_tools.pot b/sphinx/templates/tutorials/scripting/debug/overview_of_debugging_tools.pot index d283ec44a4..b70157c0dc 100644 --- a/sphinx/templates/tutorials/scripting/debug/overview_of_debugging_tools.pot +++ b/sphinx/templates/tutorials/scripting/debug/overview_of_debugging_tools.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/debug/the_profiler.pot b/sphinx/templates/tutorials/scripting/debug/the_profiler.pot index 1080a8e42b..771511f87f 100644 --- a/sphinx/templates/tutorials/scripting/debug/the_profiler.pot +++ b/sphinx/templates/tutorials/scripting/debug/the_profiler.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/evaluating_expressions.pot b/sphinx/templates/tutorials/scripting/evaluating_expressions.pot index 6e4a8558f2..e87911ea50 100644 --- a/sphinx/templates/tutorials/scripting/evaluating_expressions.pot +++ b/sphinx/templates/tutorials/scripting/evaluating_expressions.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/filesystem.pot b/sphinx/templates/tutorials/scripting/filesystem.pot index 57c258fee7..97f6fcef14 100644 --- a/sphinx/templates/tutorials/scripting/filesystem.pot +++ b/sphinx/templates/tutorials/scripting/filesystem.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/gdextension/gdextension_c_example.pot b/sphinx/templates/tutorials/scripting/gdextension/gdextension_c_example.pot index f56dffd531..8cad198585 100644 --- a/sphinx/templates/tutorials/scripting/gdextension/gdextension_c_example.pot +++ b/sphinx/templates/tutorials/scripting/gdextension/gdextension_c_example.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -199,642 +199,642 @@ msgstr "" msgid "Let's work on the source counterpart of this header. Create the ``api.c`` file in the ``src`` folder, adding the following code:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:363 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:367 msgid "The first important thing here is ``p_get_proc_address``. This a function from the GDExtension API that is passed during initialization. You can use this function to request specific functions from the API by their name. Here we are caching the results so we don't have to keep a reference for ``p_get_proc_address`` everywhere and use our wrapper instead." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:369 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:373 msgid "At the start we request the ``variant_get_ptr_destructor()`` function. This is not going to be used outside of this function, so we don't add to our wrapper and only cache it locally. The cast is necessary to silence compiler warnings." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:373 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:377 msgid "Then we get the function that creates a StringName from a C string, exactly what we mentioned before as a needed function. We store that in our ``constructors`` struct." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:377 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:381 msgid "Next, we use the ``variant_get_ptr_destructor()`` function we just got to query for the destructor for StringName, using the enum value from ``gdextension_interface.h`` API as a parameter. We could get destructors for other types in a similar manner, but we'll limit ourselves to what is needed for the example." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:383 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:387 msgid "Lastly, we get the ``classdb_register_extension_class2()`` function, which we'll need in order to register our custom class." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:387 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:391 msgid "You may wonder why the ``2`` is there in the function name. This means it's the second version of this function. The old version is kept to ensure backwards compatibility with older extensions, but since we have the second version available, it's best to use the new one, because we don't intend to support older Godot versions in this example." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:393 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:397 msgid "The ``gdextension_interface.h`` header documents in which Godot version each function was introduced." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:396 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:400 msgid "We also define the ``class_library`` variable here, which will be set during initialization." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:399 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:403 msgid "Speaking of initialization, now we have to change the ``init.c`` file in order to fill the things we just added:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:411 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:415 msgid "Here we set the ``class_library`` as needed and call our new ``load_api()`` function. Don't forget to also include the new headers at the top of this file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:422 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:426 msgid "Since we are here, we can register our new custom class. Let's fill the ``initialize_gdexample_module()`` function:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:475 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:479 msgid "The struct with the class information is the biggest thing here. None of its fields are required with the exception of ``create_instance_func`` and ``free_instance_func``. We haven't made those functions yet, so we'll have to work on them soon. Note that we skip the initialization if it isn't at the ``SCENE`` level. This function may be called multiple times, once for each level, but we only want to register our class once." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:482 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:486 msgid "The other undefined thing here is ``StringName``. This will be an opaque struct meant to hold the data of a Godot StringName in our extension. We'll define it in the appropriately named ``defs.h`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:505 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:507 msgid "As mentioned in the comment, the sizes can be found in the ``extension_api.json`` file that we generated earlier, under the ``builtin_class_sizes`` property. The ``BUILD_32`` is never defined, as we assume we are working with a 64-bits build of Godot here, but if you need it you can add ``env.Append(CPPDEFINES=[\"BUILD_32\"])`` to your ``SConstruct`` file." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:511 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:513 msgid "The ``// Types.`` comment foreshadows that we'll be adding more types to this file. Let's leave that for later." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:514 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:516 msgid "The ``StringName`` struct here is just to hold Godot data, so we don't really care what is inside of it. Though, in this case, it is just a pointer to the data in the heap. We'll use this struct when we need to allocate data for a StringName ourselves, like we are doing when registering our class." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:519 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:521 msgid "Back to registering, we need to work on our create and free functions. Let's include them in ``gdexample.h`` since they're specific to the custom class:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:531 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:533 msgid "Before we can implement those function, we'll need a few more things in our API. We need a way to allocate and free memory. While we could do this with good ol' ``malloc()``, we can instead make use of Godot's memory management functions. We'll also need a way to create a Godot object and set it with our custom instance." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:537 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:539 msgid "So let's change the ``api.h`` to include these new functions:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:552 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:554 msgid "Then we change the ``load_api()`` function in ``api.c`` to grab these new functions:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:569 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:571 msgid "Now we can go back to ``gdexample.c`` and define the new functions, without forgetting to include the ``api.h`` header:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:619 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:621 msgid "When instantiating an object, first we create a new Sprite2D object, since that's the parent of our class. Then we allocate memory for our custom struct and call its constructor. We save the pointer to the Godot object in the struct as well like we mentioned earlier." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:624 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:626 msgid "Then we set our custom struct as the instance data. This will make Godot know that the object is an instance of our custom class and properly call our custom methods for instance, as well as passing this data back." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:628 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:630 msgid "Note that we return the Godot object we created, not our custom struct." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:630 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:632 msgid "For the ``gdextension_free_instance()`` function, we only call the destructor and free the memory we allocated for the custom data. It is not necessary to destruct the Godot object since that will be taken care of by the engine itself." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:635 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:637 msgid "A demo project" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:637 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:639 msgid "Now that we can create and free our custom object, we should be able to try it out in an actual project. For this, you need to open Godot and create a new project on the ``demo`` folder. The project manager may warn you the folder isn't empty if you have compiled the extension before, you can safely ignore this warning this time." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:643 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:645 msgid "If you didn't compile the extension yet, it is the time to do it now. To do that, open a terminal or command prompt, navigate to the root folder of the extension and run ``scons``. It should compile quickly since the extension is very simple." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:648 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:650 msgid "Then, create a file called ``gdexample.gdextension`` inside the ``demo`` folder. This is a Godot resource that describes the extension, allowing the engine to properly load it. Put the following content in this file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:664 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:666 msgid "As you can see, ``gdexample_library_init()`` is the same name of the function we defined in our ``init.c`` file. It is important that the names match because it is how Godot calls the entry point of the extension." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:668 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:670 msgid "We also set the compatibility minimum to 4.2, since we are targeting this version. It should still work on later versions. If you are using a later Godot version and rely on the new features, you need to increase this value to a version number that has everything you use. See :ref:`doc_what_is_gdextension_version_compatibility` for more information." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:674 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:676 msgid "In the ``[libraries]`` section we set up the paths to the shared library on different platforms. Here there's only the debug versions since that's what we are working on for the example. Using :ref:`feature tags ` you can fine tune this to also provide release versions, add more target operating systems, as well as providing 32-bit and 64-bit binaries." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:680 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:682 msgid "You can also add library dependencies and custom icons for your classes in this file, but this is out of the scope for this tutorial." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:683 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:685 msgid "After saving the file, go back to the editor. Godot should automatically load the extension. Nothing will be seen because our extension only registers a new class. To use this class add a ``Node2D`` as a root of the scene. Move it to the middle of viewport for better visibility. Then add a new child node to the root and in the **Create New Node** dialog search for \"GDExample\", the name of our class, as it should be listed there. If it isn't, it means that Godot didn't load the extension properly, so try restarting the editor and retrace the steps to see if anything went missing." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:692 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:694 msgid "Our custom class is derived from ``Sprite2D``, so it has a **Texture** property in the Inspector. Set this to the ``icon.svg`` file that Godot handily created for us when making the project. Save this scene as ``main.tscn`` and run it. You may want to set it as the main scene for convenience." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:699 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:701 msgid "Voilà! We have a custom node running in Godot. However, it does not do anything and has nothing different than a regular ``Sprite2D`` node. We will fix that next by adding custom methods and properties." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:704 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:706 msgid "Custom methods" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:706 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:708 msgid "A common thing in extensions is creating methods for the custom classes and exposing those to the Godot API. We are going to create a couple of getters and setters which are need for binding the properties afterwards." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:710 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:712 msgid "First, let's add the new fields in our struct to hold the values for ``amplitude`` and ``speed``, which we will use later on when creating the behavior for the node. Add them to the ``gdexample.h`` file, changing the ``GDExample`` struct:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:731 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:733 msgid "In the same file, add the declaration for the getters and setters, right after the destructor." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:749 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:751 msgid "In the ``gdexample.c`` file, we will initialize these values in the constructor and add the implementations for those new functions, which are quite trivial:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:780 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:782 msgid "To make those simple functions work when called by Godot, we will need some wrappers to help us properly convert the data to and from the engine." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:783 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:785 msgid "First, we will create wrappers for ``ptrcall``. This is what Godot uses when the types of the values are known to be exact, which avoids using Variant. We're gonna need two of those: one for the functions that take no arguments and return a ``double`` (for the getters) and another for the functions that take a single ``double`` argument and return nothing (for the setters)." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:789 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:791 msgid "Add the declarations to the ``api.h`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:797 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:799 msgid "Those two functions follow the ``GDExtensionClassMethodPtrCall`` type, as defined in the ``gdextension_interface.h``. We use ``float`` as a name here because in Godot the ``float`` type has double precision, so we keep this convention." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:802 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:804 msgid "Then we implement those functions in the ``api.c`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:820 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:822 msgid "The ``method_userdata`` argument is a custom value that we give to Godot, in this case we will set as the function pointer for the one we want to call. So first we convert it to the function type, then we just call it by passing the arguments when needed, or setting the return value." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:825 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:827 msgid "The ``p_instance`` argument contains the custom instance of our class, which we gave with ``object_set_instance()`` when creating the object." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:828 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:830 msgid "``p_args`` is an array of arguments. Note this contains **pointers** to the values. That's why we dereference it when passing to our functions. The number of arguments will be declared when binding the function (which we will do soon) and it will always include default ones if those exist." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:833 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:835 msgid "Finally, the ``r_ret`` is a pointer to the variable where the return value needs to be set. Like the arguments, it will be the correct type as declared. For the function that does not return, we have to avoid setting it." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:837 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:839 msgid "Note how the type and argument counts are exact, so if we needed different types, for example, we would have to create more wrappers. This could be automated using some code generation, but this is out of the scope for this tutorial." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:842 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:844 msgid "While the ``ptrcall`` functions are used when types are exact, sometimes Godot cannot know if that's the case (when the call comes from a dynamically typed language, such as GDScript). In those situations it uses regular ``call`` functions, so we need to provide those as well when binding." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:847 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:849 msgid "Let's create two new wrappers in the ``api.h`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:854 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:856 msgid "These follow the ``GDExtensionClassMethodCall`` type, which is a bit different. First, you receive pointers to Variants instead of exact types. There's also the amount of arguments and an error struct that you can set if something goes wrong." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:859 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:861 msgid "In order to check the type and also extract interact with Variant, we will need a few more functions from the GDExtension API. So let's expand our wrapper structs:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:879 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:881 msgid "The names say all about what those do. We have a couple of constructors to create and extract a floating point value to and from a Variant. We also have a couple of helpers to actually get those constructors, as well as a function to find out the type of a Variant." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:884 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:886 msgid "Let's get those from the API, like we did before, by changing the ``load_api()`` function in the ``api.c`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:907 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:909 msgid "Now that we have these set, we can implement our call wrappers in the same file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:963 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:965 msgid "These functions are a bit longer but easy to follow. First they check if the argument count is as expected and if not they set the error struct and return. For the one that has one parameter, it also checks if the argument type is correct. This is important because mismatched types when extracting from Variant can cause crashes." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:969 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:971 msgid "Then it proceeds to extract the argument using the constructor we setup before. The one with no arguments instead sets the return value after calling the function. Note how they use a pointer to a ``double`` variable, since this is what those constructors expect." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:974 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:976 msgid "Before we can actually bind our methods, we need a way to create ``GDExtensionPropertyInfo`` instances. While we could do them inside the binding functions that we'll implement afterwards, it's easier to have a helper for it since we'll need it multiple times, including for when we bind properties." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:979 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:981 msgid "Let's create these two functions in the ``api.h`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:998 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1000 msgid "The first one is a simplified version of the second since we usually don't need all the arguments for the property and are okay with the defaults. Then we also have a function to destruct the PropertyInfo since we need to create Strings and StringNames that need to be properly disposed of." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1003 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1005 msgid "Speaking of which, we also need a way to create and destruct Strings, so we'll make an addition to existing structs in this same file. We'll also get a new API function for actually binding our custom method." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1027 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1029 msgid "Before implementing those, let's do a quick stop in the ``defs.h`` file and include the size of the ``String`` type and a couple of enums:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1063 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1065 msgid "While it's the same size as ``StringName``, it is more clear to use a different name for it." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1066 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1068 msgid "The enums here are just helpers to give names to the numbers they represent. The information about them is present in the ``extension_api.json`` file. Here we just set up the ones we need for the tutorial, to keep it more concise." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1070 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1072 msgid "Going now to the ``api.c``, we need to load the pointers to the new functions we added to the API." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1091 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1093 msgid "Then we can also implement the functions to create the ``PropertyInfo`` struct." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1142 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1144 msgid "The simple version of ``make_property()`` just calls the more complete one with a some default arguments. What those values mean exactly is out of the scope of this tutorial, check the page about the :ref:`Object class ` for more details about binding methods and properties." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1147 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1149 msgid "The complete version is more involved. First, it creates ``String``'s and ``StringName``'s for the needed fields, by allocating memory and calling their constructors. Then it creates a ``GDExtensionPropertyInfo`` struct and sets all the fields with the arguments provided. Finally it returns this created struct." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1152 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1154 msgid "The ``destruct_property()`` function is straightforward, it simply calls the destructors for the created objects and frees their allocated memory." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1155 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1157 msgid "Let's go back again to the header ``api.h`` to create the functions that will actually bind the methods:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1175 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1177 msgid "Then switch back to the ``api.c`` file to implement these:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1262 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1264 msgid "Both functions are very similar. First, they create a ``StringName`` with the method name. This is created in the stack since we don't need to keep it after the function ends. Then they create local variables to hold the ``call_func`` and ``ptrcall_func``, pointing to the helper functions we defined earlier." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1267 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1269 msgid "In the next step they diverge a bit. The first one creates a property for the return value, which has an empty name since it's not needed. The other creates an array of properties for the arguments, which in this case has a single element. This one also has an array of metadata, which can be used if there's something special about the argument (e.g. if an ``int`` value is 32 bits long instead of the default of 64 bits)." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1274 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1276 msgid "Afterwards, they create the ``GDExtensionClassMethodInfo`` with the required fields for each case. Then they make a ``StringName`` for the class name, in order to associate the method with the class. Next, they call the API function to actually bind this method to the class. Finally, we destruct the objects we created since they aren't needed anymore." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1281 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1283 msgid "The bind helpers here use the call helpers we created earlier, so do note that those call helpers only accept the Godot ``FLOAT`` type (which is equivalent to ``double`` in C). If you intend to use this for other types, you would need to check the type of the arguments and return type and select an appropriate function callback. This is avoided here only to keep the example from becoming even longer." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1288 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1290 msgid "Now that we have the means to bind methods, we can actually do so in our custom class. Go to the ``gdexample.c`` file and fill up the ``gdexample_class_bind_methods()`` function:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1303 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1305 msgid "Since this function is already being called by the initialization process, we can stop here. This function is much more straightforward after we created all the infrastructure to make this work. You can see that implementing the binding functions inline here would take some space and also be quite repetitive. This also makes it easier to add another method in the future." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1309 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1311 msgid "If you compile the code and reopen the demo project, nothing will be different at first, since we only added two new methods. To ensure those are registered properly, you can search for ``GDExample`` in the editor help and verify they are present in the documentation page." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1318 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1320 msgid "Custom properties" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1320 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1322 msgid "Since we now have the getter and setter for our properties already bound, we can move forward to create actual properties that will be displayed in the Godot editor inspector." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1324 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1326 msgid "Given our extensive setup in the previous section, there are only a few things needed to enable us to bind properties. First, let's get a new API function in the ``api.h`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1336 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1338 msgid "Let's also declare a function here to bind properties:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1347 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1349 msgid "In the ``api.c`` file, we can load the new API function:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1360 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1362 msgid "Then we can implement our new helper function in this same file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1388 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1390 msgid "This function is similar to the one for binding methods. The main difference is that we don't need an extra struct since we can simply use the ``GDExtensionPropertyInfo`` that is created by our helper function, so it's more straightforward. It only creates the ``StringName`` values from the C strings, creates a property info struct using our helper, calls the API function to register the property in the class and then destructs all the objects we created." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1396 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1398 msgid "With this done, we can extend the ``gdexample_class_bind_methods()`` function in the ``gdexample.c`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1412 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1414 msgid "If you build the extension with ``scons``, you'll see in the Godot editor the new property shown not only on the documentation page for the custom class but also in the Inspector dock when the ``GDExample`` node is selected." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1419 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1421 msgid "Binding virtual methods" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1421 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1423 msgid "Our custom node now has properties to influence how it operates, but it still doesn't do anything. In this section, we will bind the virtual method :ref:`_process() ` and make our custom sprite move a little bit." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1426 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1428 msgid "In the ``gdexample.h`` file, let's add a function that represents the custom ``_process()`` method:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1434 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1436 msgid "We'll also add a \"private\" field to keep track of the time passed in our custom struct. This is \"private\" only in the sense that it won't be bound to the Godot API, even though it is public in the C side, given the language lacks access modifiers." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1448 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1450 msgid "On the counterpart source file ``gdexample.c`` we need to initialize the new field in the constructor:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1460 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1462 msgid "Then we can create the simplest implementation for the ``_process`` method:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1469 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1471 msgid "For now it will do nothing but update the private field we created. We'll come back to this after the method is properly bound." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1472 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1474 msgid "Virtual methods are a bit different from the regular bindings. Instead of explicitly registering the method itself, we'll register a special function that Godot will call to ask if a particular virtual method is implemented in our extension. The engine will pass a ``StringName`` as an argument so, following the spirit of this tutorial, we'll create a helper function to check if it is equal to a C string." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1479 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1481 msgid "Let's add the declaration to the ``api.h`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1486 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1488 msgid "We'll also add a new struct to this file, to hold function pointers for custom operators:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1495 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1497 msgid "Then in the ``api.c`` file we'll load the function pointer from the API:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1511 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1515 msgid "As you can see we need a new local helper here in order to grab the function pointer for the operator." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1514 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1518 msgid "With this handy, we can easily create our comparison function in the same file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1535 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1539 msgid "This function creates a ``StringName`` from the argument, compares with the other one using the operator function pointer, and returns the result. Note that the return value for the operator is passed as an out reference, this is a common thing in the API." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1540 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1544 msgid "Let's go back to the ``gdexample.h`` file and add a couple of functions that will be used as the callbacks for the Godot API:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1548 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1552 msgid "There are actually two ways of registering virtual methods. Only one has the ``get`` part, in which you give Godot a properly crafted function pointer which will be called. For this we would need to create another helper for each virtual method, something that is not very convenient. Instead, we use the second method which allows us to return any data, and then Godot will call a second callback and give us back this data along with the call information. We can simply give our own function pointer as custom data and then have a single callback for all virtual methods. Although in this example we will only use it for one method, this way is simpler to expand." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1558 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1562 msgid "So let's implement those two functions in the ``gdexample.c`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1582 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1586 msgid "Those functions are also quite straightforward after making all the helpers previously." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1585 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1589 msgid "For the first one, we simply check if the function name requested is ``_process`` and if it is we return a function pointer to our implementation of it. Otherwise we return ``NULL``, signaling that the method is not being overridden. We don't use the ``p_class_userdata`` here since this function is meant only for one class and we don't have any data associated with it." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1591 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1595 msgid "The second one is similar. If it is the ``_process()`` method, it uses the given function pointer to call the ``ptrcall`` helper, passing the call arguments forward. Otherwise it simply does nothing, since we don't have any other virtual methods being implemented." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1596 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1600 msgid "The only thing missing is using those callbacks when the class is registered. Go to the ``init.c`` file and change the ``class_info`` initialization to include those, replacing the ``NULL`` value used previously:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1616 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1620 msgid "This is enough to bind the virtual method. If you build the extension and run the demo project again, the ``_process()`` function will be called. You just won't be able to tell since the function itself does nothing visible. We will solve this now by making the custom node move following a pattern." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1621 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1625 msgid "In order to make our node do stuff, we'll need to call Godot methods. Not only the GDExtension API functions as we've being doing so far, but actual engine methods, as we would do with scripting. This naturally requires some extra setup." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1625 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1629 msgid "First, let's add :ref:`class_Vector2` to our ``defs.h`` file, so we can use it in our method:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1649 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1653 msgid "The ``REAL_T_IS_DOUBLE`` define is only needed if your Godot version was built with double precision support, which is not the default." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1652 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1656 msgid "Now, in the ``api.h`` file, we'll add few things to the API structs, including a new one for holding engine methods to call." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1677 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1681 msgid "Then in the ``api.c`` file we can grab the function pointers from Godot:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1699 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1705 msgid "The only noteworthy part here is the ``Vector2`` constructor, for which we request the index ``3``. Since there are multiple constructors with different kinds of arguments, we need to specify which one we want. In this case we're getting the one that takes two float numbers as the ``x`` and ``y`` coordinates, hence the name. This index can be retrieved from the ``extension_api.json`` file. Note we also need a new local helper to get it." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1706 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1712 msgid "Be aware that we don't get anything for the methods struct here. This is because this function is called too early in the initialization process, so classes won't be properly registered yet." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1710 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1716 msgid "Instead, we're gonna use the initialization level callback to grab those when we are registering our custom class. Add this to the ``init.c`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1736 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1742 msgid "Here we create ``StringName``'s for the class and method we want to get, then use the GDExtension API to retrieve their ``MethodBind``, which is an object that represents the bound method. We get the ``set_position`` method from ``Node2D`` since this is where it was registered, even though we're going to use it in a ``Sprite2D``, a derived class." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1742 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1748 msgid "The seemingly random number for getting the bind is actually a hash of the method signature. This allows Godot to match the method you're requesting even if in a future Godot version this signature changes, by providing a compatibility method that matches what you're asking for. This is one of the systems that allow the engine to load extensions made for previous versions. You can get the value of this hash from the ``extension_api.json`` file." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1749 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1755 msgid "With all that, we can finally implement our custom ``_process()`` method in the ``gdexample.c`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1779 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1785 msgid "After updating the time passed scaled by the ``speed`` property, it creates ``x`` and ``y`` values based on that, also modulated by the ``amplitude`` property. This is what will give the pattern effect. The ``math.h`` header is needed for the ``sin()`` and ``cos()`` functions used here." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1784 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1790 msgid "Then it sets up an array of arguments to construct a ``Vector2``, followed by calling the constructor. It sets up another array of arguments and use it to call the ``set_position()`` method via the bind we acquired previously." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1788 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1794 msgid "Since nothing here allocates any memory, there's not a need to cleanup." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1790 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1796 msgid "Now we can build the extension again and reopen Godot. Even in the editor you'll see the custom sprite moving." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1795 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1801 msgid "Try changing the **Speed** and **Amplitude** properties and see how the sprite react." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1799 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1805 msgid "Registering and emitting a signal" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1801 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1807 msgid "To complete this tutorial, let's see how you can register a custom signal and emit it when appropriate. As you might have guessed, we'll need a few more function pointers from the API and more helper functions." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1805 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1811 msgid "In the ``api.h`` file we're adding two things. One is an API function to register a signal, the other is a helper function to wrap the signal binding." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1825 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1831 msgid "In this case we only have a version for one argument, since it's what we're going to use." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1828 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1834 msgid "Moving to the ``api.c`` file, we can load this new function pointer and implement the helper:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1865 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1871 msgid "This one is very similar to the function to bind methods. The main difference is that we don't need to fill another struct, we just pass the needed names and the array of arguments. The ``1`` at the end means the amount of arguments the signal provides." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1870 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1876 msgid "With this we can bind the signal in ``gdexample.c``:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1880 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1886 msgid "In order to emit a signal, we need to call the :ref:`emit_signal() ` method on our custom node. Since this is a ``vararg`` function (meaning it takes any amount of arguments), we cannot use ``ptrcall``. To do a regular call, we have to create Variants, which require a few more steps of plumbing to get done." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1886 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1892 msgid "First, in the ``defs.h`` file we create a definition for Variant:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1914 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1920 msgid "We first set the size of Variant together with the size of Vector2 that we added before. Then we use it to create an opaque struct that is enough to hold the Variant data. Again, we set the size for double precision builds as a fallback, since by the official Godot builds use single precision." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1919 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1925 msgid "The ``emit_signal()`` function will be called with two arguments. The first is the name of the signal to be emitted and the second is the argument we're passing to the signal connections, which is a Vector2 as we declared when binding it. So we're gonna create a helper function that can call a MethodBind with these types. Even though it does return something (an error code), we don't need to deal with it, so for now we're just going to ignore it." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1926 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1932 msgid "In the ``api.h``, we're adding a few things to the existing structs, plus a new helper function for the call:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1967 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1973 msgid "Now let's switch to the ``api.c`` file to load these new function pointers and implement the helper function." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2012 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2019 msgid "This helper function has some boilerplate code but is quite straightforward. It sets up the two arguments inside stack allocated Variants, then creates an array with pointers to those. It also sets up another Variant to keep the return value, which we don't need to construct since the call expects it to be uninitialized." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2017 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2024 msgid "Then it actually calls the MethodBind using the instance we provided and the arguments. The ``NULL`` at the end would be a pointer to a ``GDExtensionCallError`` struct. This can be used to treat potential errors when calling the functions (such as wrong arguments). For the sake of simplicity we're not gonna handle that here." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2023 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2030 msgid "At the end we need to destruct the Variants we created. While technically the Vector2 one does not require destructing, it is clearer to cleanup everything." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2026 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2033 msgid "We also need to load the MethodBind, which we'll do in the ``init.c`` file, right after loading the one for the ``set_position`` method we did before:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2045 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2052 msgid "Note that we reuse the ``native_class_name`` and ``method_name`` variables here, so we don't need to declare new ones." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2048 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2055 msgid "Now go to the ``gdexample.h`` file where we're going to add a couple of fields:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2062 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2069 msgid "The first one will store the time passed since the last signal was emitted, since we'll be doing so at regular intervals. The other is just to cache the signal name so we don't need to create a new StringName every time." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2066 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2073 msgid "In the source ``gdexample.c`` file we can change the constructor and destructor to deal with the new fields:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2086 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2093 msgid "It is important to destruct the StringName to avoid memory leaks." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2088 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2095 msgid "Now we can add to the ``gdexample_class_process()`` function to actually emit the signal:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2106 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2113 msgid "This updates the time passed for the signal emission and, if it is over one second it calls the ``emit_signal()`` function on the current instance, passing the name of the signal and the new position as arguments." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2110 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2117 msgid "Now we're done with our C GDExtension. Build it once more and reopen the demo project in the editor." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2113 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2120 msgid "In the documentation page for ``GDExample`` you can see the new signal we bound:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2117 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2124 msgid "To check it's working, let's add a small script to the root node, parent of our custom one, that prints the position to the output every time it receives the signal:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2131 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2138 msgid "Run the project and you can observe the values being printed in the Output dock in the editor:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2137 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2144 msgid "Conclusion" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2139 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2146 msgid "This tutorial shows a basic extension with custom methods, properties, and signals. While it does require a good amount of boilerplate, it can scale well by creating helper functions to handle the tedious tasks." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2143 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2150 msgid "This should serve as a good basis to understand the GDExtension API and as a starting point to create custom binding generators. In fact, it would be possible to create bindings for C using such type of generator, making the actual coding look more like the ``gdexample.c`` file in this example, which is quite straightforward and not very verbose." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2149 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2156 msgid "If you want to create actual extensions, it is preferred to use the C++ bindings instead, as it takes away all of the boilerplate from your code. Check the :ref:`godot-cpp documentation ` to see how you can do this." msgstr "" diff --git a/sphinx/templates/tutorials/scripting/gdextension/gdextension_file.pot b/sphinx/templates/tutorials/scripting/gdextension/gdextension_file.pot index b50d41df2e..58d93cdb7d 100644 --- a/sphinx/templates/tutorials/scripting/gdextension/gdextension_file.pot +++ b/sphinx/templates/tutorials/scripting/gdextension/gdextension_file.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -40,9 +40,9 @@ msgid "Type" msgstr "" #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:18 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:85 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:108 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:121 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:89 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:112 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:125 msgid "Description" msgstr "" @@ -110,199 +110,215 @@ msgid "Here is an example of what that can look like:" msgstr "" #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:69 +msgid "Paths can be relative or absolute (starting with ``res://``). Relative paths are recommended, as they allow the extension to keep working if it's installed to a different folder than what's specified in the path." +msgstr "" + +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:73 msgid "Entries are matched in order, so if two sets of feature tags could match the same system, be sure to put the more specific ones first:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:79 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:83 msgid "Here are lists of some of the available built-in options (for more look at the :ref:`feature tags `):" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:82 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:86 msgid "Running system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:85 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:108 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:121 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:89 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:112 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:125 msgid "Flag" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:87 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:91 msgid "**windows**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:87 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:91 msgid "Windows operating system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:89 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:93 msgid "**macos**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:89 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:93 msgid "Mac operating system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:91 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:95 msgid "**linux**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:91 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:95 msgid "Linux operating system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:93 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:97 msgid "**bsd**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:93 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:97 msgid "BSD operating system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:95 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:99 msgid "**linuxbsd**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:95 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:99 msgid "Linux or BSD operating system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:97 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:101 msgid "**android**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:97 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:101 msgid "Android operating system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:99 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:103 msgid "**ios**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:99 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:103 msgid "iOS operating system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:101 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:105 msgid "**web**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:101 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:105 msgid "Web browser" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:105 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:109 msgid "Build" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:110 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:114 msgid "**debug**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:110 -msgid "Build with debug symbols" +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:114 +msgid "Build with debugging features (editor builds always have debugging features)" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:112 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:116 msgid "**release**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:112 -msgid "Optimized build without debug symbols" -msgstr "" - -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:114 -msgid "**editor**" -msgstr "" - -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:114 -msgid "Editor build" +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:116 +msgid "Optimized build without debugging features" msgstr "" #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:118 +msgid "**editor**" +msgstr "" + +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:118 +msgid "Editor build" +msgstr "" + +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:122 msgid "Architecture" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:123 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:127 msgid "**double**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:123 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:127 msgid "double-precision build" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:125 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:129 msgid "**single**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:125 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:129 msgid "single-precision build" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:127 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:131 msgid "**x86_64**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:127 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:131 msgid "64-bit x86 build" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:129 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:133 msgid "**arm64**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:129 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:133 msgid "64-bit ARM build" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:131 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:135 msgid "**rv64**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:131 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:135 msgid "64-bit RISC-V build" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:133 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:137 msgid "**riscv**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:133 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:137 msgid "RISC-V build (any bitness)" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:135 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:139 msgid "**wasm32**" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:135 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:139 msgid "32-bit WebAssembly build" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:139 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:143 msgid "Icons section" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:141 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:145 msgid "By default, Godot uses the Node icon in the scene dock for GDExtension nodes. A custom icon can be set by reference to its name and resource path of an SVG file." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:144 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:148 msgid "For example:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:152 -msgid "The path should point to a 16 by 16 pixel SVG image. Read the guide for :ref:`creating icons ` for more information." +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:156 +msgid "The path should point to a 16×16 pixel SVG image, with two options enabled on the image in the Import dock:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:156 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:159 +msgid "**Editor > Scale with Editor Scale**." +msgstr "" + +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:160 +msgid "**Editor > Convert Colors with Editor Theme**." +msgstr "" + +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:162 +msgid "Enabling both options ensures the icon behaves as closely as possible to the stock editor icons. Read the guide for :ref:`creating icons ` for more information." +msgstr "" + +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:167 msgid "Dependencies section" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:158 -msgid "In this section you set the paths of the GDExtension dependencies. This is used internally to export the dependencies when exporting your game executable. You are able to set which dependency is loaded depending on the feature flags of the exported executable. In addition, you are able to set an optional subdirectory to move your dependencies into. If no path is supplied Godot will move the libraries into the same directory as your game executable." +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:169 +msgid "In this section, you set the paths of the GDExtension dependencies. This is used internally to export the dependencies when exporting your game executable. You are able to set which dependency is loaded depending on the feature flags of the exported executable. In addition, you are able to set an optional subdirectory to move your dependencies into. If no path is supplied, Godot will move the libraries into the same directory as your game executable." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:164 -msgid "In MacOS it is necessary to have shared libraries inside a folder called ``Frameworks`` with a directory structure like this: ``Game.app/Contents/Frameworks``." +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:176 +msgid "On macOS, it is necessary to have shared libraries inside a folder called ``Frameworks`` with a directory structure like this: ``Game.app/Contents/Frameworks``." msgstr "" diff --git a/sphinx/templates/tutorials/scripting/gdextension/index.pot b/sphinx/templates/tutorials/scripting/gdextension/index.pot index c72831ddb4..f1f1243d67 100644 --- a/sphinx/templates/tutorials/scripting/gdextension/index.pot +++ b/sphinx/templates/tutorials/scripting/gdextension/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/gdextension/what_is_gdextension.pot b/sphinx/templates/tutorials/scripting/gdextension/what_is_gdextension.pot index 8d1f4ed596..3976db9bbe 100644 --- a/sphinx/templates/tutorials/scripting/gdextension/what_is_gdextension.pot +++ b/sphinx/templates/tutorials/scripting/gdextension/what_is_gdextension.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/gdscript/gdscript_advanced.pot b/sphinx/templates/tutorials/scripting/gdscript/gdscript_advanced.pot index 0fe7dbf333..3daa9d67f5 100644 --- a/sphinx/templates/tutorials/scripting/gdscript/gdscript_advanced.pot +++ b/sphinx/templates/tutorials/scripting/gdscript/gdscript_advanced.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/gdscript/gdscript_basics.pot b/sphinx/templates/tutorials/scripting/gdscript/gdscript_basics.pot index dec9e8ef7f..90eb4f7ba7 100644 --- a/sphinx/templates/tutorials/scripting/gdscript/gdscript_basics.pot +++ b/sphinx/templates/tutorials/scripting/gdscript/gdscript_basics.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -98,7 +98,7 @@ msgid "else" msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:155 -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1806 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1827 msgid "for" msgstr "" @@ -107,7 +107,7 @@ msgid "See for_." msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:157 -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1794 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1815 msgid "while" msgstr "" @@ -116,7 +116,7 @@ msgid "See while_." msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:159 -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1869 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1890 msgid "match" msgstr "" @@ -213,7 +213,7 @@ msgid "Cast the value to a given type if possible." msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:183 -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1690 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1711 msgid "self" msgstr "" @@ -1326,7 +1326,7 @@ msgid "Typed arrays" msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:862 -msgid "Godot 4.0 added support for typed arrays. On write operations, Godot checks that element values match the specified type, so the array cannot contain invalid values. The GDScript static analyzer takes typed arrays into account, however array methods like ``front()`` and ``back()`` still have the ``Variant`` return type." +msgid "Godot also features support for typed arrays. On write operations, Godot checks that element values match the specified type, so the array cannot contain invalid values. The GDScript static analyzer takes typed arrays into account, however array methods like ``front()`` and ``back()`` still have the ``Variant`` return type." msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:867 @@ -1714,797 +1714,793 @@ msgid "A function can ``return`` at any point. The default return value is ``nul msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1414 +msgid "By default, all function parameters are required. You can make one or more parameters at the end optional by assigning a default value to them:" +msgstr "" + +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1428 msgid "If a function contains only one line of code, it can be written on one line:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1424 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1438 msgid "Functions can also have type specification for the arguments and for the return value. Types for arguments can be added in a similar way to variables:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1432 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1446 msgid "If a function argument has a default value, it's possible to infer the type:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1439 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1453 msgid "The return type of the function can be specified after the arguments list using the arrow token (``->``):" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1447 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1461 msgid "Functions that have a return type **must** return a proper value. Setting the type as ``void`` means the function doesn't return anything. Void functions can return early with the ``return`` keyword, but they can't return any value." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1456 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1470 msgid "Non-void functions must **always** return a value, so if your code has branching statements (such as an ``if``/``else`` construct), all the possible paths must have a return. E.g., if you have a ``return`` inside an ``if`` block but not after it, the editor will raise an error because if the block is not executed, the function won't have a valid value to return." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1464 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1478 msgid "Referencing functions" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1466 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1480 msgid "Functions are first-class values in terms of the :ref:`Callable ` object. Referencing a function by name without calling it will automatically generate the proper callable. This can be used to pass functions as arguments." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1488 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1502 msgid "Callables **must** be called with the :ref:`call() ` method. You cannot use the ``()`` operator directly. This behavior is implemented to avoid performance issues on direct function calls." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1493 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1507 msgid "Lambda functions" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1495 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1509 msgid "Lambda functions allow you to declare functions that do not belong to a class. Instead, a :ref:`Callable ` object is created and assigned to a variable directly. This can be useful to create callables to pass around without polluting the class scope." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1504 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1518 msgid "To call the created lambda you can use the :ref:`call() ` method:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1510 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1524 msgid "Lambda functions can be named for debugging purposes (the name is displayed in the Debugger):" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1517 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1531 msgid "You can specify type hints for lambda functions in the same way as for regular ones:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1524 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1538 msgid "Note that if you want to return a value from a lambda function, an explicit ``return`` is required (you can't omit ``return``):" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1532 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1546 msgid "Lambda functions capture the local environment:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1543 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1557 msgid "Local variables are captured by value once, when the lambda is created. So they won't be updated in the lambda if reassigned in the outer function:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1554 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1568 msgid "Also, a lambda cannot reassign an outer local variable. After exiting the lambda, the variable will be unchanged, because the lambda capture implicitly shadows it:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1567 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1581 msgid "However, if you use pass-by-reference data types (arrays, dictionaries, and objects), then the content changes are shared until you reassign the variable:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1582 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1596 msgid "Static functions" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1584 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1598 msgid "A function can be declared static. When a function is static, it has no access to the instance member variables or ``self``. A static function has access to static variables. Also static functions are useful to make libraries of helper functions:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1592 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1606 msgid "Lambda functions cannot be declared static." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1594 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1608 msgid "See also `Static variables`_ and `Static constructor`_." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1597 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1611 msgid "Variadic functions" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1599 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1613 msgid "A variadic function is a function that can take a variable number of arguments. Since Godot 4.5, GDScript supports variadic functions. To declare a variadic function, you need to use the *rest parameter*, which collects all the excess arguments into an array." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1615 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1629 msgid "A function can have at most one rest parameter, which must be the last one in the parameter list. The rest parameter cannot have a default value. Static and lambda functions can also be variadic." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1618 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1632 msgid "Static typing works for variadic functions too. However, typed arrays are currently not supported as a static type of the rest parameter:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1633 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1647 msgid "Although you can declare functions as variadic using the rest parameter, unpacking parameters when calling a function using *spread syntax* that exists in some languages ​​(JavaScript, PHP) is currently not supported in GDScript. However, you can use ``callv()`` to call a function with an array of arguments:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1648 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1669 msgid "Abstract functions" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1650 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1671 msgid "See `Abstract classes and methods`_." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1653 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1674 msgid "Statements and control flow" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1655 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1676 msgid "Statements are standard and can be assignments, function calls, control flow structures, etc (see below). ``;`` as a statement separator is entirely optional." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1660 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1681 msgid "Expressions" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1662 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1683 msgid "Expressions are sequences of operators and their operands in orderly fashion. An expression by itself can be a statement too, though only calls are reasonable to use as statements since other expressions don't have side effects." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1665 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1686 msgid "Expressions return values that can be assigned to valid targets. Operands to some operator can be another expression. An assignment is not an expression and thus does not return any value." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1668 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1689 msgid "Here are some examples of expressions:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1686 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1707 msgid "Identifiers, attributes, and subscripts are valid assignment targets. Other expressions cannot be on the left side of an assignment." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1692 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1713 msgid "``self`` can be used to refer to the current instance and is often equivalent to directly referring to symbols available in the current script. However, ``self`` also allows you to access properties, methods, and other names that are defined dynamically (i.e. are expected to exist in subtypes of the current class, or are provided using :ref:`_set() ` and/or :ref:`_get() `)." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1716 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1737 msgid "Beware that accessing members of child classes in the base class is often considered a bad practice, because this blurs the area of responsibility of any given piece of code, making the overall relationship between parts of your game harder to reason about. Besides that, one can simply forget that the parent class had some expectations about it's descendants." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1723 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1744 msgid "if/else/elif" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1725 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1746 msgid "Simple conditions are created by using the ``if``/``else``/``elif`` syntax. Parenthesis around conditions are allowed, but not required. Given the nature of the tab-based indentation, ``elif`` can be used instead of ``else``/``if`` to maintain a level of indentation." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1739 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1760 msgid "Short statements can be written on the same line as the condition:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1748 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1769 msgid "Sometimes, you might want to assign a different initial value based on a boolean expression. In this case, ternary-if expressions come in handy:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1756 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1777 msgid "Ternary-if expressions can be nested to handle more than 2 cases. When nesting ternary-if expressions, it is recommended to wrap the complete expression over multiple lines to preserve readability:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1781 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1802 msgid "You may also wish to check if a value is contained within something. You can use an ``if`` statement combined with the ``in`` operator to accomplish this:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1796 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1817 msgid "Simple loops are created by using ``while`` syntax. Loops can be broken using ``break`` or continued using ``continue`` (which skips to the next iteration of the loop without executing any further code in the current iteration):" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1808 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1829 msgid "To iterate through a range, such as an array or table, a *for* loop is used. When iterating over an array, the current array element is stored in the loop variable. When iterating over a dictionary, the *key* is stored in the loop variable." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1847 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1868 msgid "If you want to assign values on an array as it is being iterated through, it is best to use ``for i in array.size()``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1856 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1877 msgid "The loop variable is local to the for-loop and assigning to it will not change the value on the array. Objects passed by reference (such as nodes) can still be manipulated by calling methods on the loop variable." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1871 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1892 msgid "A ``match`` statement is used to branch execution of a program. It's the equivalent of the ``switch`` statement found in many other languages, but offers some additional features." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1876 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1897 msgid "``match`` is more type strict than the ``==`` operator. For example ``1`` will **not** match ``1.0``. The only exception is ``String`` vs ``StringName`` matching: for example, the String ``\"hello\"`` is considered equal to the StringName ``&\"hello\"``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1880 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1901 msgid "Basic syntax" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1892 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1913 msgid "Crash-course for people who are familiar with switch statements" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1894 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1915 msgid "Replace ``switch`` with ``match``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1895 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1916 msgid "Remove ``case``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1896 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1917 msgid "Remove any ``break``\\ s." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1897 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1918 msgid "Change ``default`` to a single underscore." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1900 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1921 msgid "Control flow" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1902 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1923 msgid "The patterns are matched from top to bottom. If a pattern matches, the first corresponding block will be executed. After that, the execution continues below the ``match`` statement." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1907 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1928 msgid "The special ``continue`` behavior in ``match`` supported in 3.x was removed in Godot 4.0." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1909 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1930 msgid "The following pattern types are available:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1911 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1932 msgid "Literal pattern" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1912 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1933 msgid "Matches a `literal `_:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1924 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1945 msgid "Expression pattern" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1925 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1946 msgid "Matches a constant expression, an identifier, or an attribute access (``A.B``):" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1937 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1958 msgid "Wildcard pattern" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1938 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1959 msgid "This pattern matches everything. It's written as a single underscore." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1940 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1961 msgid "It can be used as the equivalent of the ``default`` in a ``switch`` statement in other languages:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1952 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1973 msgid "Binding pattern" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1953 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1974 msgid "A binding pattern introduces a new variable. Like the wildcard pattern, it matches everything - and also gives that value a name. It's especially useful in array and dictionary patterns:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1966 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1987 msgid "Array pattern" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1967 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1988 msgid "Matches an array. Every single element of the array pattern is a pattern itself, so you can nest them." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1969 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1990 msgid "The length of the array is tested first, it has to be the same size as the pattern, otherwise the pattern doesn't match." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1971 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1992 msgid "**Open-ended array**: An array can be bigger than the pattern by making the last subpattern ``..``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1973 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1994 msgid "Every subpattern has to be comma-separated." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1987 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2008 msgid "Dictionary pattern" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1988 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2009 msgid "Works in the same way as the array pattern. Every key has to be a constant pattern." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1990 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2011 msgid "The size of the dictionary is tested first, it has to be the same size as the pattern, otherwise the pattern doesn't match." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1992 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2013 msgid "**Open-ended dictionary**: A dictionary can be bigger than the pattern by making the last subpattern ``..``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1994 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2015 msgid "Every subpattern has to be comma separated." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1996 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2017 msgid "If you don't specify a value, then only the existence of the key is checked." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1998 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2019 msgid "A value pattern is separated from the key pattern with a ``:``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2014 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2035 msgid "Multiple patterns" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2015 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2036 msgid "You can also specify multiple patterns separated by a comma. These patterns aren't allowed to have any bindings in them." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2026 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2047 msgid "Pattern guards" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2028 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2049 msgid "A *pattern guard* is an optional condition that follows the pattern list and allows you to make additional checks before choosing a ``match`` branch. Unlike a pattern, a pattern guard can be an arbitrary expression." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2032 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2053 msgid "Only one branch can be executed per ``match``. Once a branch is chosen, the rest are not checked. If you want to use the same pattern for multiple branches or to prevent choosing a branch with too general pattern, you can specify a pattern guard after the list of patterns with the ``when`` keyword:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2052 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2073 msgid "If there is no matching pattern for the current branch, the pattern guard is **not** evaluated and the patterns of the next branch are checked." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2054 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2075 msgid "If a matching pattern is found, the pattern guard is evaluated." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2056 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2077 msgid "If it's true, then the body of the branch is executed and ``match`` ends." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2057 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2078 msgid "If it's false, then the patterns of the next branch are checked." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2060 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2081 msgid "Classes" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2062 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2083 msgid "By default, all script files are unnamed classes. In this case, you can only reference them using the file's path, using either a relative or an absolute path. For example, if you name a script file ``character.gd``:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2080 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2101 msgid "Registering named classes" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2082 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2103 msgid "You can give your class a name to register it as a new type in Godot's editor. For that, you use the ``class_name`` keyword. You can optionally use the ``@icon`` annotation with a path to an image, to use it as an icon. Your class will then appear with its new icon in the editor:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2099 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2120 msgid "SVG images that are used as custom node icons should have the **Editor > Scale With Editor Scale** and **Editor > Convert Icons With Editor Theme** :ref:`import options ` enabled. This allows icons to follow the editor's scale and theming settings if the icons are designed with the same color palette as Godot's own icons." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2105 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2126 msgid "Here's a class file example:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2126 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2147 msgid "If you want to use ``extends`` too, you can keep both on the same line:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2132 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2153 msgid "Named classes are globally registered, which means they become available to use in other scripts without the need to ``load`` or ``preload`` them:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2144 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2165 msgid "Godot initializes non-static variables every time you create an instance, and this includes arrays and dictionaries. This is in the spirit of thread safety, since scripts can be initialized in separate threads without the user knowing." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2150 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2171 msgid "The Godot editor will hide these custom classes with names that begin with the prefix \"Editor\" in the 'Create New Node' or 'Create New Scene' dialog windows. The classes are available for instantiation at runtime via their class names, but are automatically hidden by the editor windows along with the built-in editor nodes used by the Godot editor." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2159 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2180 msgid "Abstract classes and methods" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2161 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2182 msgid "Since Godot 4.5, you can define abstract classes and methods using the ``@abstract`` annotation." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2164 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2185 msgid "An abstract class is a class that cannot be instantiated directly. Instead, it is meant to be inherited by other classes. Attempting to instantiate an abstract class will result in an error." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2168 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2189 msgid "An abstract method is a method that has no implementation. Therefore, a newline or a semicolon is expected after the function header. This defines a contract that inheriting classes must conform to, because the method signature must be compatible when overriding." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2173 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2194 msgid "Inheriting classes must either provide implementations for all abstract methods, or the inheriting class must be marked as abstract. If a class has at least one abstract method (either its own or an unimplemented inherited one), then it must also be marked as abstract. However, the reverse is not true: an abstract class is allowed to have no abstract methods." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2181 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2202 msgid "If you want to declare a method as optional to be overridden, you should use a non-abstract method and provide a default implementation." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2184 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2205 msgid "For example, you could have an abstract class called ``Shape`` that defines an abstract method called ``draw()``. You can then create subclasses like ``Circle`` and ``Square`` that implement the ``draw()`` method in their own way. This allows you to define a common *interface* for all shapes without having to implement all the details in the abstract class itself:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2205 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2226 msgid "Both inner classes and classes created using ``class_name`` can be abstract. This example creates two abstract classes, one of which is a subclass of another abstract class:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2228 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2249 msgid "Since an abstract class cannot be instantiated, it is not possible to attach an abstract class to a node. If you attempt to do so, the engine will print an error when running the scene:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2236 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2257 msgid "Unnamed classes can also be defined as abstract, the ``@abstract`` annotation must precede ``extends``:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2245 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2266 msgid "Inheritance" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2247 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2268 msgid "A class (stored as a file) can inherit from:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2249 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2270 msgid "A global class." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2250 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2271 msgid "Another class file." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2251 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2272 msgid "An inner class inside another class file." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2253 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2274 msgid "Multiple inheritance is not allowed." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2255 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2276 msgid "Inheritance uses the ``extends`` keyword:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2270 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2291 msgid "If inheritance is not explicitly defined, the class will default to inheriting :ref:`class_RefCounted`." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2273 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2294 msgid "To check if a given instance inherits from a given class, the ``is`` keyword can be used:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2287 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2308 msgid "To call a function in a *super class* (i.e. one ``extend``-ed in your current class), use the ``super`` keyword:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2294 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2315 msgid "This is especially useful because functions in extending classes replace functions with the same name in their super classes. If you still want to call them, you can use ``super``:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2303 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2324 msgid "If you need to call a different function from the super class, you can specify the function name with the attribute operator:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2316 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2337 msgid "One of the common misconceptions is trying to override *non-virtual* engine methods such as ``get_class()``, ``queue_free()``, etc. This is not supported for technical reasons." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2319 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2340 msgid "In Godot 3, you can *shadow* engine methods in GDScript, and it will work if you call this method in GDScript. However, the engine will **not** execute your code if the method is called inside the engine on some event." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2322 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2343 msgid "In Godot 4, even shadowing may not always work, as GDScript optimizes native method calls. Therefore, we added the ``NATIVE_METHOD_OVERRIDE`` warning, which is treated as an error by default. We strongly advise against disabling or ignoring the warning." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2326 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2347 msgid "Note that this does not apply to virtual methods such as ``_ready()``, ``_process()`` and others (marked with the ``virtual`` qualifier in the documentation and the names start with an underscore). These methods are specifically for customizing engine behavior and can be overridden in GDScript. Signals and notifications can also be useful for these purposes." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2332 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2353 msgid "Class constructor" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2334 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2355 msgid "The class constructor, called on class instantiation, is named ``_init``. If you want to call the base class constructor, you can also use the ``super`` syntax. Note that every class has an implicit constructor that is always called (defining the default values of class variables). ``super`` is used to call the explicit constructor:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2345 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2366 msgid "This is better explained through examples. Consider this scenario:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2371 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2392 msgid "There are a few things to keep in mind here:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2373 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2394 msgid "If the inherited class (``state.gd``) defines an ``_init`` constructor that takes arguments (``e`` in this case), then the inheriting class (``idle.gd``) *must* define ``_init`` as well and pass appropriate parameters to ``_init`` from ``state.gd``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2376 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2397 msgid "``idle.gd`` can have a different number of arguments than the base class ``state.gd``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2377 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2398 msgid "In the example above, ``e`` passed to the ``state.gd`` constructor is the same ``e`` passed in to ``idle.gd``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2379 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2400 msgid "If ``idle.gd``'s ``_init`` constructor takes 0 arguments, it still needs to pass some value to the ``state.gd`` base class, even if it does nothing. This brings us to the fact that you can pass expressions to the base constructor as well, not just variables, e.g.:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2387 -msgid "func _init():" -msgstr "" - -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2388 -msgid "super(5)" -msgstr "" - -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2391 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2412 msgid "Static constructor" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2393 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2414 msgid "A static constructor is a static function ``_static_init`` that is called automatically when the class is loaded, after the static variables have been initialized:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2403 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2424 msgid "A static constructor cannot take arguments and must not return any value." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2408 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2429 msgid "Inner classes" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2410 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2431 msgid "A class file can contain inner classes. Inner classes are defined using the ``class`` keyword. They are instanced using the ``ClassName.new()`` function." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2435 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2456 msgid "Classes as resources" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2437 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2458 msgid "Classes stored as files are treated as :ref:`GDScripts `. They must be loaded from disk to access them in other classes. This is done using either the ``load`` or ``preload`` functions (see below). Instancing of a loaded class resource is done by calling the ``new`` function on the class object:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2456 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2477 msgid "Exports" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2460 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2481 msgid "Documentation about exports has been moved to :ref:`doc_gdscript_exports`." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2466 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2487 msgid "Properties (setters and getters)" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2468 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2489 msgid "Sometimes, you want a class' member variable to do more than just hold data and actually perform some validation or computation whenever its value changes. It may also be desired to encapsulate its access in some way." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2472 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2493 msgid "For this, GDScript provides a special syntax to define properties using the ``set`` and ``get`` keywords after a variable declaration. Then you can define a code block that will be executed when the variable is accessed or assigned." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2476 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2497 msgid "Example:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2489 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2510 msgid "Unlike ``setget`` in previous Godot versions, ``set`` and ``get`` methods are **always** called (except as noted below), even when accessed inside the same class (with or without prefixing with ``self.``). This makes the behavior consistent. If you need direct access to the value, use another variable for direct access and make the property code use that name." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2495 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2516 msgid "Alternative syntax" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2497 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2518 msgid "Also there is another notation to use existing class functions if you want to split the code from the variable declaration or you need to reuse the code across multiple properties (but you can't distinguish which property the setter/getter is being called for):" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2505 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2526 msgid "This can also be done in the same line:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2511 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2532 msgid "The setter and getter must use the same notation, mixing styles for the same variable is not allowed." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2515 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2536 msgid "You cannot specify type hints for *inline* setters and getters. This is done on purpose to reduce the boilerplate. If the variable is typed, then the setter's argument is automatically of the same type, and the getter's return value must match it. Separated setter/getter functions can have type hints, and the type must match the variable's type or be a wider type." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2520 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2541 msgid "When setter/getter is not called" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2522 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2543 msgid "When a variable is initialized, the value of the initializer will be written directly to the variable. Including if the ``@onready`` annotation is applied to the variable." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2525 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2546 msgid "Using the variable's name to set it inside its own setter or to get it inside its own getter will directly access the underlying member, so it won't generate infinite recursion and saves you from explicitly declaring another variable:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2538 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2559 msgid "This also applies to the alternative syntax:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2549 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2570 msgid "The exception does **not** propagate to other functions called in the setter/getter. For example, the following code **will** cause an infinite recursion:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2564 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2585 msgid "Tool mode" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2566 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2587 msgid "By default, scripts don't run inside the editor and only the exported properties can be changed. In some cases, it is desired that they do run inside the editor (as long as they don't execute game code or manually avoid doing so). For this, the ``@tool`` annotation exists and must be placed at the top of the file:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2581 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2602 msgid "See :ref:`doc_running_code_in_the_editor` for more information." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2583 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2604 msgid "Be cautious when freeing nodes with ``queue_free()`` or ``free()`` in a tool script (especially the script's owner itself). As tool scripts run their code in the editor, misusing them may lead to crashing the editor." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2591 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2612 msgid "Memory management" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2593 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2614 msgid "Godot implements reference counting to free certain instances that are no longer used, instead of a garbage collector, or requiring purely manual management. Any instance of the :ref:`class_RefCounted` class (or any class that inherits it, such as :ref:`class_Resource`) will be freed automatically when no longer in use. For an instance of any class that is not a :ref:`class_RefCounted` (such as :ref:`class_Node` or the base :ref:`class_Object` type), it will remain in memory until it is deleted with ``free()`` (or ``queue_free()`` for Nodes)." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2604 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2625 msgid "If a :ref:`class_Node` is deleted via ``free()`` or ``queue_free()``, all of its children will also recursively be deleted." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2607 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2628 msgid "To avoid reference cycles that can't be freed, a :ref:`class_WeakRef` function is provided for creating weak references, which allow access to the object without preventing a :ref:`class_RefCounted` from freeing. Here is an example:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2632 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2653 msgid "Alternatively, when not using references, the ``is_instance_valid(instance)`` can be used to check if an object has been freed." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2639 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2660 msgid "Signals" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2641 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2662 msgid "Signals are a tool to emit messages from an object that other objects can react to. To create custom signals for a class, use the ``signal`` keyword." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2654 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2675 msgid "Signals are a `Callback `_ mechanism. They also fill the role of Observers, a common programming pattern. For more information, read the `Observer tutorial `_ in the Game Programming Patterns ebook." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2661 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2682 msgid "You can connect these signals to methods the same way you connect built-in signals of nodes like :ref:`class_Button` or :ref:`class_RigidBody3D`." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2664 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2685 msgid "In the example below, we connect the ``health_depleted`` signal from a ``Character`` node to a ``Game`` node. When the ``Character`` node emits the signal, the game node's ``_on_character_health_depleted`` is called:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2680 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2701 msgid "You can emit as many arguments as you want along with a signal." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2682 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2703 msgid "Here is an example where this is useful. Let's say we want a life bar on screen to react to health changes with an animation, but we want to keep the user interface separate from the player in our scene tree." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2686 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2707 msgid "In our ``character.gd`` script, we define a ``health_changed`` signal and emit it with :ref:`Signal.emit() `, and from a ``Game`` node higher up our scene tree, we connect it to the ``Lifebar`` using the :ref:`Signal.connect() ` method:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2727 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2748 msgid "In the ``Game`` node, we get both the ``Character`` and ``Lifebar`` nodes, then connect the character, that emits the signal, to the receiver, the ``Lifebar`` node in this case." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2741 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2762 msgid "This allows the ``Lifebar`` to react to health changes without coupling it to the ``Character`` node." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2744 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2765 msgid "You can write optional argument names in parentheses after the signal's definition:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2751 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2772 msgid "These arguments show up in the editor's node dock, and Godot can use them to generate callback functions for you. However, you can still emit any number of arguments when you emit signals; it's up to you to emit the correct values." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2757 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2778 msgid "You can also create copies of GDScript Callable objects which accept additional arguments using :ref:`Callable.bind() `. This allows you to add extra information to the connection if the emitted signal itself doesn't give you access to all the data that you need." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2762 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2783 msgid "When the signal is emitted, the callback method receives the bound values, in addition to those provided by the signal." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2765 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2786 msgid "Building on the example above, let's say we want to display a log of the damage taken by each character on the screen, like ``Player1 took 22 damage.``. The ``health_changed`` signal doesn't give us the name of the character that took damage. So when we connect the signal to the in-game console, we can add the character's name using the bind method:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2781 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2802 msgid "Our ``BattleLog`` node receives each bound element as an extra argument:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2796 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2817 msgid "Awaiting signals or coroutines" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2798 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2819 msgid "The ``await`` keyword can be used to create `coroutines `_ which wait until a signal is emitted before continuing execution. Using the ``await`` keyword with a signal or a call to a function that is also a coroutine will immediately return the control to the caller. When the signal is emitted (or the called coroutine finishes), it will resume execution from the point on where it stopped." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2803 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2824 msgid "For example, to stop execution until the user presses a button, you can do something like this:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2813 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2834 msgid "In this case, the ``wait_confirmation`` becomes a coroutine, which means that the caller also needs to await it:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2825 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2846 msgid "Note that requesting a coroutine's return value without ``await`` will trigger an error:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2832 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2853 msgid "However, if you don't depend on the result, you can just call it asynchronously, which won't stop execution and won't make the current function a coroutine:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2841 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2862 msgid "If you use await with an expression that isn't a signal nor a coroutine, the value will be returned immediately and the function won't give the control back to the caller:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2853 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2874 msgid "This also means that returning a signal from a function that isn't a coroutine will make the caller await that signal:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2864 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2885 msgid "Unlike ``yield`` in previous Godot versions, you cannot obtain the function state object. This is done to ensure type safety. With this type safety in place, a function cannot say that it returns an ``int`` while it actually returns a function state object during runtime." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2870 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2891 msgid "Assert keyword" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2872 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2893 msgid "The ``assert`` keyword can be used to check conditions in debug builds. These assertions are ignored in non-debug builds. This means that the expression passed as argument won't be evaluated in a project exported in release mode. Due to this, assertions must **not** contain expressions that have side effects. Otherwise, the behavior of the script would vary depending on whether the project is run in a debug build." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2884 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2905 msgid "When running a project from the editor, the project will be paused if an assertion error occurs." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2887 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2908 msgid "You can optionally pass a custom error message to be shown if the assertion fails:" msgstr "" diff --git a/sphinx/templates/tutorials/scripting/gdscript/gdscript_documentation_comments.pot b/sphinx/templates/tutorials/scripting/gdscript/gdscript_documentation_comments.pot index 66d363e7fd..23ab3d9759 100644 --- a/sphinx/templates/tutorials/scripting/gdscript/gdscript_documentation_comments.pot +++ b/sphinx/templates/tutorials/scripting/gdscript/gdscript_documentation_comments.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/gdscript/gdscript_exports.pot b/sphinx/templates/tutorials/scripting/gdscript/gdscript_exports.pot index d0b73d1d92..6085919b8c 100644 --- a/sphinx/templates/tutorials/scripting/gdscript/gdscript_exports.pot +++ b/sphinx/templates/tutorials/scripting/gdscript/gdscript_exports.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -196,7 +196,7 @@ msgid "Nodes" msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:256 -msgid "Since Godot 4.0, nodes can be directly exported as properties in a script without having to use NodePaths:" +msgid "Nodes can also be directly exported as properties in a script without having to use NodePaths:" msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:268 @@ -397,21 +397,37 @@ msgid "When changing an exported variable's value from a script in :ref:`doc_gds msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:546 -msgid "Advanced exports" +msgid "Reading an exported variable's value early on" msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:548 +msgid "If you read an exported variable's value in :ref:`_init() `, it will return the default value specified in the export annotation instead of the value that was set in the inspector. This is because assigning values from the saved scene/resource file occurs *after* object initialization; until then, the default value is used." +msgstr "" + +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:553 +msgid "To get the value that was set in the inspector (and therefore saved in the scene/resource file), you need to read it *after* the object is constructed, such as in :ref:`Node._ready() `. You can also read the value in a setter that's defined on the exported property, which is useful in custom resources where ``_ready()`` is not available:" +msgstr "" + +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:570 +msgid "Results in:" +msgstr "" + +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:578 +msgid "Advanced exports" +msgstr "" + +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:580 msgid "Not every type of export can be provided on the level of the language itself to avoid unnecessary design complexity. The following describes some more or less common exporting features which can be implemented with a low-level API." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:552 +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:584 msgid "Before reading further, you should get familiar with the way properties are handled and how they can be customized with :ref:`_set() `, :ref:`_get() `, and :ref:`_get_property_list() ` methods as described in :ref:`doc_accessing_data_or_logic_from_object`." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:559 +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:591 msgid "For binding properties using the above methods in C++, see :ref:`doc_binding_properties_using_set_get_property_list`." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:562 +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:594 msgid "The script must operate in the ``@tool`` mode so the above methods can work from within the editor." msgstr "" diff --git a/sphinx/templates/tutorials/scripting/gdscript/gdscript_format_string.pot b/sphinx/templates/tutorials/scripting/gdscript/gdscript_format_string.pot index 872489ccfc..dca14865a2 100644 --- a/sphinx/templates/tutorials/scripting/gdscript/gdscript_format_string.pot +++ b/sphinx/templates/tutorials/scripting/gdscript/gdscript_format_string.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/gdscript/gdscript_styleguide.pot b/sphinx/templates/tutorials/scripting/gdscript/gdscript_styleguide.pot index 571abe252b..2a50803067 100644 --- a/sphinx/templates/tutorials/scripting/gdscript/gdscript_styleguide.pot +++ b/sphinx/templates/tutorials/scripting/gdscript/gdscript_styleguide.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/gdscript/index.pot b/sphinx/templates/tutorials/scripting/gdscript/index.pot index b7f83da7b6..43db24a237 100644 --- a/sphinx/templates/tutorials/scripting/gdscript/index.pot +++ b/sphinx/templates/tutorials/scripting/gdscript/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/gdscript/static_typing.pot b/sphinx/templates/tutorials/scripting/gdscript/static_typing.pot index d0c6a0da71..d3e7c49384 100644 --- a/sphinx/templates/tutorials/scripting/gdscript/static_typing.pot +++ b/sphinx/templates/tutorials/scripting/gdscript/static_typing.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -323,63 +323,51 @@ msgstr "" msgid "And the same callback, with type hints:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:452 -msgid "::" -msgstr "" - -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:453 -msgid "func _on_area_2d_body_entered(body: PhysicsBody2D) -> void:" -msgstr "" - -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:454 -msgid "pass" -msgstr "" - -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:457 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:458 msgid "Warning system" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:461 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:462 msgid "Detailed documentation about the GDScript warning system has been moved to :ref:`doc_gdscript_warning_system`." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:464 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:465 msgid "Godot gives you warnings about your code as you write it. The engine identifies sections of your code that may lead to issues at runtime, but lets you decide whether or not you want to leave the code as it is." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:468 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:469 msgid "We have a number of warnings aimed specifically at users of typed GDScript. By default, these warnings are disabled, you can enable them in Project Settings (**Debug > GDScript**, make sure **Advanced Settings** is enabled)." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:472 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:473 msgid "You can enable the ``UNTYPED_DECLARATION`` warning if you want to always use static types. Additionally, you can enable the ``INFERRED_DECLARATION`` warning if you prefer a more readable and reliable, but more verbose syntax." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:476 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:477 msgid "``UNSAFE_*`` warnings make unsafe operations more noticeable, than unsafe lines. Currently, ``UNSAFE_*`` warnings do not cover all cases that unsafe lines cover." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:480 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:481 msgid "Common unsafe operations and their safe counterparts" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:483 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:484 msgid "Global scope methods" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:485 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:486 msgid "The following global scope methods are not statically typed, but they have typed counterparts available. These methods return statically typed values:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:489 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:490 msgid "Method" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:489 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:490 msgid "Statically typed equivalents" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:491 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:492 msgid ":ref:`abs()`" msgstr "" @@ -399,7 +387,7 @@ msgstr "" msgid ":ref:`Vector4.abs() `, :ref:`Vector4i.abs() `" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:500 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:501 msgid ":ref:`ceil() `" msgstr "" @@ -419,7 +407,7 @@ msgstr "" msgid ":ref:`Vector4.ceil() `" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:506 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:507 msgid ":ref:`clamp() `" msgstr "" @@ -447,7 +435,7 @@ msgstr "" msgid "(untyped ``clamp()`` does not work on Color)" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:517 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:518 msgid ":ref:`floor() `" msgstr "" @@ -467,7 +455,7 @@ msgstr "" msgid ":ref:`Vector4.floor() `" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:523 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:524 msgid ":ref:`lerp() `" msgstr "" @@ -507,7 +495,7 @@ msgstr "" msgid ":ref:`Transform3D.interpolate_with() `" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:533 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:534 msgid ":ref:`round() `" msgstr "" @@ -527,7 +515,7 @@ msgstr "" msgid ":ref:`Vector4.round() `" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:539 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:540 msgid ":ref:`sign() `" msgstr "" @@ -551,7 +539,7 @@ msgstr "" msgid ":ref:`Vector4.sign() `, :ref:`Vector4i.sign() `" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:548 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:549 msgid ":ref:`snapped() `" msgstr "" @@ -575,62 +563,62 @@ msgstr "" msgid ":ref:`Vector4.snapped() `, :ref:`Vector4i.snapped() `" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:558 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:559 msgid "When using static typing, use the typed global scope methods whenever possible. This ensures you have safe lines and benefit from typed instructions for better performance." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:563 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:564 msgid "``UNSAFE_PROPERTY_ACCESS`` and ``UNSAFE_METHOD_ACCESS`` warnings" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:565 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:566 msgid "In this example, we aim to set a property and call a method on an object that has a script attached with ``class_name MyScript`` and that ``extends Node2D``. If we have a reference to the object as a ``Node2D`` (for instance, as it was passed to us by the physics system), we can first check if the property and method exist and then set and call them if they do:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:579 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:580 msgid "However, this code will produce ``UNSAFE_PROPERTY_ACCESS`` and ``UNSAFE_METHOD_ACCESS`` warnings as the property and method are not present in the referenced type - in this case a ``Node2D``. To make these operations safe, you can first check if the object is of type ``MyScript`` using the ``is`` keyword and then declare a variable with the type ``MyScript`` on which you can set its properties and call its methods:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:593 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:594 msgid "Alternatively, you can declare a variable and use the ``as`` operator to try to cast the object. You'll then want to check whether the cast was successful by confirming that the variable was assigned:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:605 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:606 msgid "``UNSAFE_CAST`` warning" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:607 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:608 msgid "In this example, we would like the label connected to an object entering our collision area to show the area's name. Once the object enters the collision area, the physics system sends a signal with a ``Node2D`` object, and the most straightforward (but not statically typed) solution to do what we want could be achieved like this:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:618 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:619 msgid "This piece of code produces an ``UNSAFE_PROPERTY_ACCESS`` warning because ``label`` is not defined in ``Node2D``. To solve this, we could first check if the ``label`` property exist and cast it to type ``Label`` before settings its text property like so:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:629 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:630 msgid "However, this produces an ``UNSAFE_CAST`` warning because ``body.label`` is of a ``Variant`` type. To safely get the property in the type you want, you can use the ``Object.get()`` method which returns the object as a ``Variant`` value or returns ``null`` if the property doesn't exist. You can then determine whether the property contains an object of the right type using the ``is`` keyword, and finally declare a statically typed variable with the object:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:645 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:646 msgid "Cases where you can't specify types" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:649 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:650 msgid "To wrap up this introduction, let's mention cases where you can't use type hints. This will trigger a **syntax error**." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:652 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:653 msgid "You can't specify the type of individual elements in an array or a dictionary:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:663 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:664 msgid "Nested types are not currently supported:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:670 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:671 msgid "Summary" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:675 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:676 msgid "Typed GDScript is a powerful tool. It helps you write more structured code, avoid common errors, and create scalable and reliable systems. Static types improve GDScript performance and more optimizations are planned for the future." msgstr "" diff --git a/sphinx/templates/tutorials/scripting/gdscript/warning_system.pot b/sphinx/templates/tutorials/scripting/gdscript/warning_system.pot index 0b86e9e8c7..818b2c3ef4 100644 --- a/sphinx/templates/tutorials/scripting/gdscript/warning_system.pot +++ b/sphinx/templates/tutorials/scripting/gdscript/warning_system.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/groups.pot b/sphinx/templates/tutorials/scripting/groups.pot index c9bbf8cdb7..cdf916edc6 100644 --- a/sphinx/templates/tutorials/scripting/groups.pot +++ b/sphinx/templates/tutorials/scripting/groups.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/how_to_read_the_godot_api.pot b/sphinx/templates/tutorials/scripting/how_to_read_the_godot_api.pot index 6e589e785e..56805ea3d2 100644 --- a/sphinx/templates/tutorials/scripting/how_to_read_the_godot_api.pot +++ b/sphinx/templates/tutorials/scripting/how_to_read_the_godot_api.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/idle_and_physics_processing.pot b/sphinx/templates/tutorials/scripting/idle_and_physics_processing.pot index c53a807c5d..c3a9bb95ad 100644 --- a/sphinx/templates/tutorials/scripting/idle_and_physics_processing.pot +++ b/sphinx/templates/tutorials/scripting/idle_and_physics_processing.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/index.pot b/sphinx/templates/tutorials/scripting/index.pot index afaa3153bd..faa474e4f7 100644 --- a/sphinx/templates/tutorials/scripting/index.pot +++ b/sphinx/templates/tutorials/scripting/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/instancing_with_signals.pot b/sphinx/templates/tutorials/scripting/instancing_with_signals.pot index 6c4c76f972..76a53133dc 100644 --- a/sphinx/templates/tutorials/scripting/instancing_with_signals.pot +++ b/sphinx/templates/tutorials/scripting/instancing_with_signals.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/logging.pot b/sphinx/templates/tutorials/scripting/logging.pot index bce96e4659..78ccd66685 100644 --- a/sphinx/templates/tutorials/scripting/logging.pot +++ b/sphinx/templates/tutorials/scripting/logging.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/nodes_and_scene_instances.pot b/sphinx/templates/tutorials/scripting/nodes_and_scene_instances.pot index 1c76c38333..06b686881f 100644 --- a/sphinx/templates/tutorials/scripting/nodes_and_scene_instances.pot +++ b/sphinx/templates/tutorials/scripting/nodes_and_scene_instances.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/other_languages.pot b/sphinx/templates/tutorials/scripting/other_languages.pot index 03f7ad7185..a8de1c4398 100644 --- a/sphinx/templates/tutorials/scripting/other_languages.pot +++ b/sphinx/templates/tutorials/scripting/other_languages.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/overridable_functions.pot b/sphinx/templates/tutorials/scripting/overridable_functions.pot index 06a6cdb61d..cb931507f1 100644 --- a/sphinx/templates/tutorials/scripting/overridable_functions.pot +++ b/sphinx/templates/tutorials/scripting/overridable_functions.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/pausing_games.pot b/sphinx/templates/tutorials/scripting/pausing_games.pot index 183048cb45..d0b00796d6 100644 --- a/sphinx/templates/tutorials/scripting/pausing_games.pot +++ b/sphinx/templates/tutorials/scripting/pausing_games.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/resources.pot b/sphinx/templates/tutorials/scripting/resources.pot index d2e77288e5..6071f6c851 100644 --- a/sphinx/templates/tutorials/scripting/resources.pot +++ b/sphinx/templates/tutorials/scripting/resources.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/scene_tree.pot b/sphinx/templates/tutorials/scripting/scene_tree.pot index 2cb83aaa77..f4789b63cd 100644 --- a/sphinx/templates/tutorials/scripting/scene_tree.pot +++ b/sphinx/templates/tutorials/scripting/scene_tree.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/scene_unique_nodes.pot b/sphinx/templates/tutorials/scripting/scene_unique_nodes.pot index 8253f46c9c..ce7721336d 100644 --- a/sphinx/templates/tutorials/scripting/scene_unique_nodes.pot +++ b/sphinx/templates/tutorials/scripting/scene_unique_nodes.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/scripting/singletons_autoload.pot b/sphinx/templates/tutorials/scripting/singletons_autoload.pot index 6f35a05870..f3c783e7fd 100644 --- a/sphinx/templates/tutorials/scripting/singletons_autoload.pot +++ b/sphinx/templates/tutorials/scripting/singletons_autoload.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -144,7 +144,7 @@ msgid "Open the **Script** window and create a new script called ``global.gd``. msgstr "" #: ../../docs/tutorials/scripting/singletons_autoload.rst:151 -msgid "The next step is to add this script to the autoLoad list. Starting from the menu, open **Project > Project Settings > Globals > Autoload** and select the script by clicking the browse button or typing its path: ``res://global.gd``. Press **Add** to add it to the autoload list and name it \"Global\", which is required for scripts to access it by the name \"Global\":" +msgid "The next step is to add this script to the autoload list. Starting from the menu, open **Project > Project Settings > Globals > Autoload** and select the script by clicking the browse button or typing its path: ``res://global.gd``. Press **Add** to add it to the autoload list and name it \"Global\", which is required for scripts to access it by the name \"Global\":" msgstr "" #: ../../docs/tutorials/scripting/singletons_autoload.rst:161 diff --git a/sphinx/templates/tutorials/shaders/advanced_postprocessing.pot b/sphinx/templates/tutorials/shaders/advanced_postprocessing.pot index 271f99334c..e23f0a1c5e 100644 --- a/sphinx/templates/tutorials/shaders/advanced_postprocessing.pot +++ b/sphinx/templates/tutorials/shaders/advanced_postprocessing.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/compute_shaders.pot b/sphinx/templates/tutorials/shaders/compute_shaders.pot index 4974ea6e76..848b653672 100644 --- a/sphinx/templates/tutorials/shaders/compute_shaders.pot +++ b/sphinx/templates/tutorials/shaders/compute_shaders.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/converting_glsl_to_godot_shaders.pot b/sphinx/templates/tutorials/shaders/converting_glsl_to_godot_shaders.pot index 87b95a6676..c388e2e51c 100644 --- a/sphinx/templates/tutorials/shaders/converting_glsl_to_godot_shaders.pot +++ b/sphinx/templates/tutorials/shaders/converting_glsl_to_godot_shaders.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/custom_postprocessing.pot b/sphinx/templates/tutorials/shaders/custom_postprocessing.pot index 239eff24ef..8d54658afc 100644 --- a/sphinx/templates/tutorials/shaders/custom_postprocessing.pot +++ b/sphinx/templates/tutorials/shaders/custom_postprocessing.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/index.pot b/sphinx/templates/tutorials/shaders/index.pot index 950099ce49..05e34b4803 100644 --- a/sphinx/templates/tutorials/shaders/index.pot +++ b/sphinx/templates/tutorials/shaders/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/introduction_to_shaders.pot b/sphinx/templates/tutorials/shaders/introduction_to_shaders.pot index d2e186a11f..6c4bc5cee7 100644 --- a/sphinx/templates/tutorials/shaders/introduction_to_shaders.pot +++ b/sphinx/templates/tutorials/shaders/introduction_to_shaders.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/making_trees.pot b/sphinx/templates/tutorials/shaders/making_trees.pot index e0dfc36d6f..c4a2d3b5fc 100644 --- a/sphinx/templates/tutorials/shaders/making_trees.pot +++ b/sphinx/templates/tutorials/shaders/making_trees.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/screen-reading_shaders.pot b/sphinx/templates/tutorials/shaders/screen-reading_shaders.pot index 31b9f1f8c9..457d9946c8 100644 --- a/sphinx/templates/tutorials/shaders/screen-reading_shaders.pot +++ b/sphinx/templates/tutorials/shaders/screen-reading_shaders.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/shader_reference/canvas_item_shader.pot b/sphinx/templates/tutorials/shaders/shader_reference/canvas_item_shader.pot index 445c2d46c0..f13a3b4e1a 100644 --- a/sphinx/templates/tutorials/shaders/shader_reference/canvas_item_shader.pot +++ b/sphinx/templates/tutorials/shaders/shader_reference/canvas_item_shader.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -105,7 +105,7 @@ msgid "**light_only**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:33 -msgid "Only draw on light pass." +msgid "Only draw in the light pass." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:35 @@ -156,7 +156,7 @@ msgid "in float **TIME**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:60 -msgid "Global time since the engine has started, in seconds. It repeats after every ``3,600`` seconds (which can be changed with the :ref:`rollover` setting). It's affected by :ref:`time_scale` but not by pausing. If you need a ``TIME`` variable that is not affected by time scale, add your own :ref:`global shader uniform` and update it each frame." +msgid "Global time since the engine has started, in seconds. It repeats after every ``3,600`` seconds (which can be changed with the :ref:`rollover` setting). It's affected by :ref:`time_scale` but not by pausing. If you need a ``TIME`` variable that is not affected by time scale, add your own :ref:`global shader uniform` and update it each frame." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:69 @@ -164,7 +164,7 @@ msgid "in float **PI**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:69 -msgid "A ``PI`` constant (``3.141592``). A ratio of a circle's circumference to its diameter and amount of radians in half turn." +msgid "A ``PI`` constant (``3.141592``). The ratio of a circle's circumference to its diameter and the number of radians in a half turn." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:72 @@ -172,7 +172,7 @@ msgid "in float **TAU**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:72 -msgid "A ``TAU`` constant (``6.283185``). An equivalent of ``PI * 2`` and amount of radians in full turn." +msgid "A ``TAU`` constant (``6.283185``). Equivalent to ``PI * 2`` and the number of radians in a full turn." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:75 @@ -180,7 +180,7 @@ msgid "in float **E**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:75 -msgid "An ``E`` constant (``2.718281``). Euler's number and a base of the natural logarithm." +msgid "An ``E`` constant (``2.718281``). Euler's number, the base of the natural logarithm." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:80 @@ -228,7 +228,7 @@ msgid "in mat4 **CANVAS_MATRIX**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:113 -msgid "World space to canvas space transform. In canvas space the origin is the upper-left corner of the screen and coordinates ranging from ``(0.0, 0.0)`` to viewport size." +msgid "World space to canvas space transform. In canvas space the origin is the upper-left corner of the screen and coordinates range from ``(0.0, 0.0)`` to viewport size." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:118 @@ -236,7 +236,7 @@ msgid "in mat4 **SCREEN_MATRIX**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:118 -msgid "Canvas space to clip space. In clip space coordinates ranging from ``(-1.0, -1.0)`` to ``(1.0, 1.0).``" +msgid "Canvas space to clip space transform. In clip space coordinates range from ``(-1.0, -1.0)`` to ``(1.0, 1.0).``" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:122 @@ -272,7 +272,7 @@ msgid "in vec2 **TEXTURE_PIXEL_SIZE**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:128 -msgid "Normalized pixel size of default 2D texture. For a Sprite2D with a texture of size 64x32px, **TEXTURE_PIXEL_SIZE** = ``vec2(1/64, 1/32)``" +msgid "Normalized pixel size of the default 2D texture. For a Sprite2D with a texture of size 64x32px, **TEXTURE_PIXEL_SIZE** = ``vec2(1.0/64.0, 1.0/32.0)``" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:132 @@ -306,7 +306,7 @@ msgid "inout vec4 **COLOR**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:140 -msgid "Color from vertex primitive multiplied by CanvasItem's :ref:`modulate` multiplied by CanvasItem's :ref:`self_modulate`." +msgid "Color from vertex primitive multiplied by the CanvasItem's :ref:`modulate` multiplied by CanvasItem's :ref:`self_modulate`." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:145 @@ -393,7 +393,7 @@ msgid "in vec2 **SCREEN_PIXEL_SIZE**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:224 -msgid "Size of individual pixels. Equal to inverse of resolution." +msgid "Size of individual pixels. Equal to the inverse of resolution." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:226 @@ -423,7 +423,7 @@ msgid "Default 2D texture." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:234 -msgid "Normalized pixel size of default 2D texture. For a Sprite2D with a texture of size 64x32px, ``TEXTURE_PIXEL_SIZE`` = ``vec2(1/64, 1/32)``" +msgid "Normalized pixel size of the default 2D texture. For a Sprite2D with a texture of size 64x32px, ``TEXTURE_PIXEL_SIZE`` = ``vec2(1/64, 1/32)``" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:240 @@ -449,7 +449,7 @@ msgid "in vec2 **UV**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:244 -msgid "UV from the ``vertex()`` function. For Sprite2D with region enabled, this will sample the entire texture. Use ``REGION_RECT`` instead to sample only the region defined in the Sprite2D's properties." +msgid "UV from the ``vertex()`` function. For a Sprite2D with region enabled, this will sample the entire texture. Use ``REGION_RECT`` instead to sample only the region defined in the Sprite2D's properties." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:249 @@ -459,7 +459,7 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:249 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:318 -msgid "Screen UV coordinate for current pixel." +msgid "Screen UV coordinate for the current pixel." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:251 @@ -567,7 +567,7 @@ msgid "UV from the ``vertex()`` function, equivalent to the UV in the ``fragment msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:312 -msgid "Current texture in use for CanvasItem." +msgid "Current texture in use for the CanvasItem." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:314 @@ -651,7 +651,7 @@ msgid "SDF functions" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:348 -msgid "There are a few additional functions implemented to sample an automatically generated Signed Distance Field texture. These functions available for the ``fragment()`` and ``light()`` functions of CanvasItem shaders. Custom functions may also use them as long as they called from supported functions." +msgid "There are a few additional functions implemented to sample an automatically generated Signed Distance Field texture. These functions are available in the ``fragment()`` and ``light()`` functions of CanvasItem shaders. Custom functions may also use them as long as they are called from supported functions." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:353 diff --git a/sphinx/templates/tutorials/shaders/shader_reference/fog_shader.pot b/sphinx/templates/tutorials/shaders/shader_reference/fog_shader.pot index a125b4f437..f26b15cfab 100644 --- a/sphinx/templates/tutorials/shaders/shader_reference/fog_shader.pot +++ b/sphinx/templates/tutorials/shaders/shader_reference/fog_shader.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -20,7 +20,7 @@ msgid "Fog shaders" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:6 -msgid "Fog shaders are used to define how fog is added (or subtracted) from a scene in a given area. Fog shaders are always used together with :ref:`FogVolumes ` and volumetric fog. Fog shaders only have one processing function, the ``fog()`` function." +msgid "Fog shaders are used to define how fog is added to (or subtracted from) a scene in a given area. Fog shaders are always used together with :ref:`FogVolumes ` and volumetric fog. Fog shaders only have one processing function, the ``fog()`` function." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:11 @@ -28,7 +28,7 @@ msgid "The resolution of the fog shaders depends on the resolution of the volume msgstr "" #: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:16 -msgid "Fog shaders are a special form of compute shader that is called once for every froxel that is touched by an axis aligned bounding box of the associated :ref:`FogVolume `. This means that froxels that just barely touch a given :ref:`FogVolume ` will still be used." +msgid "Fog shaders are a special form of compute shader that is called once for every froxel that is touched by an axis-aligned bounding box of the associated :ref:`FogVolume `. This means that froxels that just barely touch a given :ref:`FogVolume ` will still be used." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:22 @@ -47,116 +47,116 @@ msgstr "" msgid "Global built-ins are available everywhere, including in custom functions." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:35 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:64 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:34 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:63 msgid "Built-in" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:35 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:64 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:34 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:63 msgid "Description" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:37 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:36 msgid "in float **TIME**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:37 -msgid "Global time since the engine has started, in seconds. It repeats after every ``3,600`` seconds (which can be changed with the :ref:`rollover` setting). It's affected by :ref:`time_scale` but not by pausing. If you need a ``TIME`` variable that is not affected by time scale, add your own :ref:`global shader uniform` and update it each frame." +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:36 +msgid "Global time since the engine has started, in seconds. It repeats after every ``3,600`` seconds (which can be changed with the :ref:`rollover` setting). It's affected by :ref:`time_scale` but not by pausing. If you need a ``TIME`` variable that is not affected by time scale, add your own :ref:`global shader uniform` and update it each frame." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:46 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:45 msgid "in float **PI**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:46 -msgid "A ``PI`` constant (``3.141592``). A ratio of a circle's circumference to its diameter and amount of radians in half turn." +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:45 +msgid "A ``PI`` constant (``3.141592``). The ratio of a circle's circumference to its diameter and the number of radians in a half turn." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:49 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:48 msgid "in float **TAU**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:49 -msgid "A ``TAU`` constant (``6.283185``). An equivalent of ``PI * 2`` and amount of radians in full turn." +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:48 +msgid "A ``TAU`` constant (``6.283185``). Equivalent to ``PI * 2`` and the number of radians in a full turn." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:52 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:51 msgid "in float **E**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:52 -msgid "An ``E`` constant (``2.718281``). Euler's number and a base of the natural logarithm." +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:51 +msgid "An ``E`` constant (``2.718281``). Euler's number, the base of the natural logarithm." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:57 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:56 msgid "Fog built-ins" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:59 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:58 msgid "All of the output values of fog volumes overlap one another. This allows :ref:`FogVolumes ` to be rendered efficiently as they can all be drawn at once." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:66 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:65 msgid "in vec3 **WORLD_POSITION**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:66 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:65 msgid "Position of current froxel cell in world space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:68 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:67 msgid "in vec3 **OBJECT_POSITION**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:68 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:67 msgid "Position of the center of the current :ref:`FogVolume ` in world space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:70 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:69 msgid "in vec3 **UVW**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:70 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:69 msgid "3-dimensional UV, used to map a 3D texture to the current :ref:`FogVolume `." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:72 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:71 msgid "in vec3 **SIZE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:72 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:71 msgid "Size of the current :ref:`FogVolume ` when its :ref:`shape` has a size." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:75 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:74 msgid "in vec3 **SDF**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:75 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:74 msgid "Signed distance field to the surface of the :ref:`FogVolume `. Negative if inside volume, positive otherwise." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:78 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:77 msgid "out vec3 **ALBEDO**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:78 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:77 msgid "Output base color value, interacts with light to produce final color. Only written to fog volume if used." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:81 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:80 msgid "out float **DENSITY**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:81 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:80 msgid "Output density value. Can be negative to allow subtracting one volume from another. Density must be used for fog shader to write anything at all." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:84 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:83 msgid "out vec3 **EMISSION**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:84 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:83 msgid "Output emission color value, added to color during light pass to produce final color. Only written to fog volume if used." msgstr "" diff --git a/sphinx/templates/tutorials/shaders/shader_reference/index.pot b/sphinx/templates/tutorials/shaders/shader_reference/index.pot index 547cbf269e..568570fc5f 100644 --- a/sphinx/templates/tutorials/shaders/shader_reference/index.pot +++ b/sphinx/templates/tutorials/shaders/shader_reference/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/shader_reference/particle_shader.pot b/sphinx/templates/tutorials/shaders/shader_reference/particle_shader.pot index cfe8817731..86e4397bc5 100644 --- a/sphinx/templates/tutorials/shaders/shader_reference/particle_shader.pot +++ b/sphinx/templates/tutorials/shaders/shader_reference/particle_shader.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -20,7 +20,7 @@ msgid "Particle shaders" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:6 -msgid "Particle shaders are a special type of shader that runs before the object is drawn. They are used for calculating material properties such as color, position, and rotation. They are drawn with any regular material for CanvasItem or Spatial, depending on whether they are 2D or 3D." +msgid "Particle shaders are a special type of shader that runs before the object is drawn. They are used for calculating material properties such as color, position, and rotation. They can be drawn with any regular material for CanvasItem or Spatial, depending on whether they are 2D or 3D." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:11 @@ -115,7 +115,7 @@ msgid "in float **TIME**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:60 -msgid "Global time since the engine has started, in seconds. It repeats after every ``3,600`` seconds (which can be changed with the :ref:`rollover` setting). It's affected by :ref:`time_scale` but not by pausing. If you need a ``TIME`` variable that is not affected by time scale, add your own :ref:`global shader uniform` and update it each frame." +msgid "Global time since the engine has started, in seconds. It repeats after every ``3,600`` seconds (which can be changed with the :ref:`rollover` setting). It's affected by :ref:`time_scale` but not by pausing. If you need a ``TIME`` variable that is not affected by time scale, add your own :ref:`global shader uniform` and update it each frame." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:69 @@ -123,7 +123,7 @@ msgid "in float **PI**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:69 -msgid "A ``PI`` constant (``3.141592``). A ratio of a circle's circumference to its diameter and amount of radians in half turn." +msgid "A ``PI`` constant (``3.141592``). The ratio of a circle's circumference to its diameter and the number of radians in a half turn." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:72 @@ -131,7 +131,7 @@ msgid "in float **TAU**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:72 -msgid "A ``TAU`` constant (``6.283185``). An equivalent of ``PI * 2`` and amount of radians in full turn." +msgid "A ``TAU`` constant (``6.283185``). Equivalent to ``PI * 2`` and the number of radians in a full turn." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:75 @@ -139,7 +139,7 @@ msgid "in float **E**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:75 -msgid "An ``E`` constant (``2.718281``). Euler's number and a base of the natural logarithm." +msgid "An ``E`` constant (``2.718281``). Euler's number, the base of the natural logarithm." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:79 @@ -208,7 +208,7 @@ msgid "inout bool **ACTIVE**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:98 -msgid "``true`` when the particle is active, can be set ``false``." +msgid "``true`` when the particle is active, can be set to ``false``." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:100 @@ -216,7 +216,7 @@ msgid "inout vec4 **COLOR**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:100 -msgid "Particle color, can be written to and accessed in mesh's vertex function." +msgid "Particle color, can be written to and accessed in the mesh's vertex function." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:102 @@ -240,7 +240,7 @@ msgid "inout vec4 **CUSTOM**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:106 -msgid "Custom particle data. Accessible from shader of mesh as ``INSTANCE_CUSTOM``." +msgid "Custom particle data. Accessible from the mesh's shader as ``INSTANCE_CUSTOM``." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:108 @@ -248,7 +248,7 @@ msgid "inout float **MASS**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:108 -msgid "Particle mass, intended to be used with attractors. Equals ``1.0`` by default." +msgid "Particle mass, intended to be used with attractors. ``1.0`` by default." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:110 @@ -264,7 +264,7 @@ msgid "in uint **FLAG_EMIT_POSITION**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:113 -msgid "A flag for using on the last argument of ``emit_subparticle()`` function to assign a position to a new particle's transform." +msgid "A flag for the last argument of the ``emit_subparticle()`` function to assign a position to a new particle's transform." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:115 @@ -272,7 +272,7 @@ msgid "in uint **FLAG_EMIT_ROT_SCALE**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:115 -msgid "A flag for using on the last argument of ``emit_subparticle()`` function to assign the rotation and scale to a new particle's transform." +msgid "A flag for the last argument of the ``emit_subparticle()`` function to assign a rotation and scale to a new particle's transform." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:117 @@ -280,7 +280,7 @@ msgid "in uint **FLAG_EMIT_VELOCITY**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:117 -msgid "A flag for using on the last argument of ``emit_subparticle()`` function to assign a velocity to a new particle." +msgid "A flag for the last argument of the ``emit_subparticle()`` function to assign a velocity to a new particle." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:119 @@ -288,7 +288,7 @@ msgid "in uint **FLAG_EMIT_COLOR**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:119 -msgid "A flag for using on the last argument of ``emit_subparticle()`` function to assign a color to a new particle." +msgid "A flag for the last argument of the ``emit_subparticle()`` function to assign a color to a new particle." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:121 @@ -296,7 +296,7 @@ msgid "in uint **FLAG_EMIT_CUSTOM**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:121 -msgid "A flag for using on the last argument of ``emit_subparticle()`` function to assign a custom data vector to a new particle." +msgid "A flag for the last argument of the ``emit_subparticle()`` function to assign a custom data vector to a new particle." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:123 @@ -312,7 +312,7 @@ msgid "in float **INTERPOLATE_TO_END**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:125 -msgid "Value of :ref:`interp_to_end` (:ref:`3D`) property of Particles node." +msgid "Value of the :ref:`interp_to_end` (:ref:`3D`) property of the Particles node." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:128 @@ -320,7 +320,7 @@ msgid "in uint **AMOUNT_RATIO**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:128 -msgid "Value of :ref:`amount_ratio` (:ref:`3D`) property of Particles node." +msgid "Value of the :ref:`amount_ratio` (:ref:`3D`) property of the Particles node." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:132 @@ -380,7 +380,7 @@ msgid "in bool **RESTART**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:158 -msgid "``true`` if the current process frame is first for the particle." +msgid "``true`` if the current process frame is the first for the particle." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:160 @@ -404,7 +404,7 @@ msgid "in float **COLLISION_DEPTH**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:164 -msgid "A length of normal of the last collision. If there is no collision detected it is equal to ``0.0``." +msgid "A length of the normal of the last collision. If there is no collision detected it is equal to ``0.0``." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:166 @@ -420,7 +420,7 @@ msgid "Process functions" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:172 -msgid "``emit_subparticle()`` is currently the only custom function supported by particles shaders. It allows users to add a new particle with specified parameters from a sub-emitter. The newly created particle will only use the properties that match the ``flags`` parameter. For example, the following code will emit a particle with a specified position, velocity, and color, but unspecified rotation, scale, and custom value:" +msgid "``emit_subparticle()`` is currently the only custom function supported by particle shaders. It allows users to add a new particle with specified parameters from a sub-emitter. The newly created particle will only use the properties that match the ``flags`` parameter. For example, the following code will emit a particle with a specified position, velocity, and color, but unspecified rotation, scale, and custom value:" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:188 diff --git a/sphinx/templates/tutorials/shaders/shader_reference/shader_functions.pot b/sphinx/templates/tutorials/shaders/shader_reference/shader_functions.pot index 9c4899b1b1..229ab2bbd5 100644 --- a/sphinx/templates/tutorials/shaders/shader_reference/shader_functions.pot +++ b/sphinx/templates/tutorials/shaders/shader_reference/shader_functions.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -2777,6 +2777,10 @@ msgstr "" msgid "Get the size of a texture." msgstr "" +#: ../../docs/tutorials/shaders/shader_reference/shader_functions.rst:2257 +msgid "For performance reasons, this function should be avoided as it always performs a full texture read. When possible, you should pass the texture size as a uniform instead." +msgstr "" + #: ../../docs/tutorials/shaders/shader_reference/shader_functions.rst:0 msgid "vec2" msgstr "" diff --git a/sphinx/templates/tutorials/shaders/shader_reference/shader_preprocessor.pot b/sphinx/templates/tutorials/shaders/shader_reference/shader_preprocessor.pot index ec5e11470b..c11282b884 100644 --- a/sphinx/templates/tutorials/shaders/shader_reference/shader_preprocessor.pot +++ b/sphinx/templates/tutorials/shaders/shader_reference/shader_preprocessor.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -28,7 +28,7 @@ msgid "In programming languages, a *preprocessor* allows changing the code befor msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shader_preprocessor.rst:17 -msgid "From Godot 4.0 onwards, you can use a shader preprocessor within text-based shaders. The syntax is similar to what most GLSL shader compilers support (which in turn is similar to the C/C++ preprocessor)." +msgid "To avoid repetition and improve code reuse, you can use a shader preprocessor within text-based shaders. The syntax is similar to what most GLSL shader compilers support (which in turn is similar to the C/C++ preprocessor)." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shader_preprocessor.rst:23 diff --git a/sphinx/templates/tutorials/shaders/shader_reference/shading_language.pot b/sphinx/templates/tutorials/shaders/shader_reference/shading_language.pot index 19638215f8..2739a40cd8 100644 --- a/sphinx/templates/tutorials/shaders/shader_reference/shading_language.pot +++ b/sphinx/templates/tutorials/shaders/shader_reference/shading_language.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -40,13 +40,13 @@ msgid "Most GLSL ES 3.0 datatypes are supported:" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:25 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:868 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:876 msgid "Type" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:25 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:810 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:868 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:818 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:876 msgid "Description" msgstr "" @@ -59,7 +59,7 @@ msgid "Void datatype, useful only for functions that return nothing." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:29 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1149 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1190 msgid "**bool**" msgstr "" @@ -68,7 +68,7 @@ msgid "Boolean datatype, can only contain ``true`` or ``false``." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:31 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1151 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1192 msgid "**bvec2**" msgstr "" @@ -77,7 +77,7 @@ msgid "Two-component vector of booleans." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:33 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1161 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1202 msgid "**bvec3**" msgstr "" @@ -86,7 +86,7 @@ msgid "Three-component vector of booleans." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:35 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1163 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1204 msgid "**bvec4**" msgstr "" @@ -95,12 +95,12 @@ msgid "Four-component vector of booleans." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:37 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:872 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1151 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1161 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1163 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1165 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1173 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:880 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1192 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1202 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1204 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1206 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1214 msgid "**int**" msgstr "" @@ -109,7 +109,7 @@ msgid "32 bit signed scalar integer." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:39 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1167 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1208 msgid "**ivec2**" msgstr "" @@ -118,7 +118,7 @@ msgid "Two-component vector of signed integers." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:41 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1169 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1210 msgid "**ivec3**" msgstr "" @@ -127,7 +127,7 @@ msgid "Three-component vector of signed integers." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:43 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1171 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1212 msgid "**ivec4**" msgstr "" @@ -136,7 +136,7 @@ msgid "Four-component vector of signed integers." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:45 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1173 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1214 msgid "**uint**" msgstr "" @@ -145,7 +145,7 @@ msgid "Unsigned scalar integer; can't contain negative numbers." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:47 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1175 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1216 msgid "**uvec2**" msgstr "" @@ -154,7 +154,7 @@ msgid "Two-component vector of unsigned integers." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:49 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1177 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1218 msgid "**uvec3**" msgstr "" @@ -163,7 +163,7 @@ msgid "Three-component vector of unsigned integers." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:51 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1179 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1220 msgid "**uvec4**" msgstr "" @@ -172,7 +172,7 @@ msgid "Four-component vector of unsigned integers." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:53 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1181 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1222 msgid "**float**" msgstr "" @@ -181,7 +181,7 @@ msgid "32 bit floating-point scalar." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:55 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1183 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1224 msgid "**vec2**" msgstr "" @@ -190,7 +190,7 @@ msgid "Two-component vector of floating-point values." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:57 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1185 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1226 msgid "**vec3**" msgstr "" @@ -199,7 +199,7 @@ msgid "Three-component vector of floating-point values." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:59 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1187 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1228 msgid "**vec4**" msgstr "" @@ -208,7 +208,7 @@ msgid "Four-component vector of floating-point values." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:61 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1197 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1238 msgid "**mat2**" msgstr "" @@ -217,7 +217,7 @@ msgid "2x2 matrix, in column major order." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:63 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1200 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1241 msgid "**mat3**" msgstr "" @@ -226,7 +226,7 @@ msgid "3x3 matrix, in column major order." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:65 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1202 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1243 msgid "**mat4**" msgstr "" @@ -235,19 +235,19 @@ msgid "4x4 matrix, in column major order." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:67 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:876 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:878 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:880 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:882 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:884 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:886 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:888 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:890 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:892 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:894 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:896 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:898 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:900 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1205 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:902 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:904 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:906 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:908 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1246 msgid "**sampler2D**" msgstr "" @@ -256,7 +256,7 @@ msgid "Sampler type for binding 2D textures, which are read as float." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:69 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1207 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1248 msgid "**isampler2D**" msgstr "" @@ -265,7 +265,7 @@ msgid "Sampler type for binding 2D textures, which are read as signed integer." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:71 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1209 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1250 msgid "**usampler2D**" msgstr "" @@ -274,7 +274,7 @@ msgid "Sampler type for binding 2D textures, which are read as unsigned integer. msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:73 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1211 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1252 msgid "**sampler2DArray**" msgstr "" @@ -283,7 +283,7 @@ msgid "Sampler type for binding 2D texture arrays, which are read as float." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:75 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1213 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1254 msgid "**isampler2DArray**" msgstr "" @@ -292,7 +292,7 @@ msgid "Sampler type for binding 2D texture arrays, which are read as signed inte msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:77 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1215 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1256 msgid "**usampler2DArray**" msgstr "" @@ -301,7 +301,7 @@ msgid "Sampler type for binding 2D texture arrays, which are read as unsigned in msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:79 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1217 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1258 msgid "**sampler3D**" msgstr "" @@ -310,7 +310,7 @@ msgid "Sampler type for binding 3D textures, which are read as float." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:81 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1219 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1260 msgid "**isampler3D**" msgstr "" @@ -319,7 +319,7 @@ msgid "Sampler type for binding 3D textures, which are read as signed integer." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:83 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1221 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1262 msgid "**usampler3D**" msgstr "" @@ -328,7 +328,7 @@ msgid "Sampler type for binding 3D textures, which are read as unsigned integer. msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:85 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1223 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1264 msgid "**samplerCube**" msgstr "" @@ -337,7 +337,7 @@ msgid "Sampler type for binding Cubemaps, which are read as float." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:87 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1226 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1267 msgid "**samplerCubeArray**" msgstr "" @@ -346,7 +346,7 @@ msgid "Sampler type for binding Cubemap arrays, which are read as float. Only su msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:90 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1228 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1269 msgid "**samplerExternalOES**" msgstr "" @@ -354,1048 +354,1060 @@ msgstr "" msgid "External sampler type. Only supported in Compatibility/Android platform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:96 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:94 +msgid "These types can also be put inside :ref:`arrays ` or :ref:`structs `, which are also usable as function parameters or return values. Arrays can be used as uniforms, but structs cannot." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:100 msgid "Local variables are not initialized to a default value such as ``0.0``. If you use a variable without assigning it first, it will contain whatever value was already present at that memory location, and unpredictable visual glitches will appear. However, uniforms and varyings are initialized to a default value." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:103 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:107 msgid "Comments" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:105 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:109 msgid "The shading language supports the same comment syntax as used in C# and C++, using ``//`` for single-line comments and ``/* */`` for multi-line comments:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:120 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:124 msgid "Additionally, you can use documentation comments that are displayed in the inspector when hovering a shader parameter. Documentation comments are currently only supported when placed immediately above a ``uniform`` declaration. These documentation comments only support the **multiline** comment syntax and must use **two** leading asterisks (``/**``) instead of just one (``/*``):" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:136 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:140 msgid "The asterisks on the follow-up lines are not required, but are recommended as per the :ref:`doc_shaders_style_guide`. These asterisks are automatically stripped by the inspector, so they won't appear in the tooltip." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:141 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:145 msgid "Casting" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:143 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:147 msgid "Just like GLSL ES 3.0, implicit casting between scalars and vectors of the same size but different type is not allowed. Casting of types of different size is also not allowed. Conversion must be done explicitly via constructors." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:147 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:151 msgid "Example:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:155 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:159 msgid "Default integer constants are signed, so casting is always needed to convert to unsigned:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:165 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:169 msgid "Members" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:167 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:171 msgid "Individual scalar members of vector types are accessed via the \"x\", \"y\", \"z\" and \"w\" members. Alternatively, using \"r\", \"g\", \"b\" and \"a\" also works and is equivalent. Use whatever fits best for your needs." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:171 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:175 msgid "For matrices, use the ``m[column][row]`` indexing syntax to access each scalar, or ``m[column]`` to access a vector by column index. For example, for accessing the y-component of the translation from a mat4 transform matrix (4th column, 2nd line) you use ``m[3][1]`` or ``m[3].y``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:176 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:180 msgid "Constructing" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:178 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:182 msgid "Construction of vector types must always pass:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:190 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:194 msgid "Construction of matrix types requires vectors of the same dimension as the matrix, interpreted as columns. You can also build a diagonal matrix using ``matx(float)`` syntax. Accordingly, ``mat4(1.0)`` is an identity matrix." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:200 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:204 msgid "Matrices can also be built from a matrix of another dimension. There are two rules:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:203 -msgid "1. If a larger matrix is constructed from a smaller matrix, the additional rows and columns are set to the values they would have in an identity matrix. 2. If a smaller matrix is constructed from a larger matrix, the top, left submatrix of the larger matrix is used." +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:207 +msgid "1. If a larger matrix is constructed from a smaller matrix, the additional rows and columns are set to the values they would have in an identity matrix. 1. If a smaller matrix is constructed from a larger matrix, the top, left submatrix of the larger matrix is used." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:215 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:219 msgid "Swizzling" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:217 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:221 msgid "It is possible to obtain any combination of components in any order, as long as the result is another vector type (or scalar). This is easier shown than explained:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:235 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:239 msgid "Precision" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:237 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:241 msgid "It is possible to add precision modifiers to datatypes; use them for uniforms, variables, arguments and varyings:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:247 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:251 msgid "Using lower precision for some operations can speed up the math involved (at the cost of less precision). This is rarely needed in the vertex processor function (where full precision is needed most of the time), but is often useful in the fragment processor." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:252 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:256 msgid "Some architectures (mainly mobile) can benefit significantly from this, but there are downsides such as the additional overhead of conversion between precisions. Refer to the documentation of the target architecture for further information. In many cases, mobile drivers cause inconsistent or unexpected behavior and it is best to avoid specifying precision unless necessary." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:259 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:265 msgid "Arrays" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:261 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:267 msgid "Arrays are containers for multiple variables of a similar type." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:264 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:270 msgid "Local arrays" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:266 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:272 msgid "Local arrays are declared in functions. They can use all of the allowed datatypes, except samplers. The array declaration follows a C-style syntax: ``[const] + [precision] + typename + identifier + [array size]``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:276 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:282 msgid "They can be initialized at the beginning like:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:288 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:294 msgid "You can declare multiple arrays (even with different sizes) in one expression:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:298 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:304 msgid "To access an array element, use the indexing syntax:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:308 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:314 msgid "Arrays also have a built-in function ``.length()`` (not to be confused with the built-in ``length()`` function). It doesn't accept any parameters and will return the array's size." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:321 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:327 msgid "If you use an index either below 0 or greater than array size - the shader will crash and break rendering. To prevent this, use ``length()``, ``if``, or ``clamp()`` functions to ensure the index is between 0 and the array's length. Always carefully test and check your code. If you pass a constant expression or a number, the editor will check its bounds to prevent this crash." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:329 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:335 msgid "Global arrays" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:331 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:337 msgid "You can declare arrays in global space as either ``const`` or ``uniform``:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:346 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:352 msgid "Global arrays use the same syntax as local arrays, except with a ``const`` or ``uniform`` added to their declaration. Note that uniform arrays can't have a default value." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:351 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:357 msgid "Constants" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:353 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:359 msgid "Use the ``const`` keyword before the variable declaration to make that variable immutable, which means that it cannot be modified. All basic types, except samplers can be declared as constants. Accessing and using a constant value is slightly faster than using a uniform. Constants must be initialized at their declaration." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:367 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:373 msgid "Constants cannot be modified and additionally cannot have hints, but multiple of them (if they have the same type) can be declared in a single expression e.g" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:374 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:380 msgid "Similar to variables, arrays can also be declared with ``const``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:384 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:390 msgid "Constants can be declared both globally (outside of any function) or locally (inside a function). Global constants are useful when you want to have access to a value throughout your shader that does not need to be modified. Like uniforms, global constants are shared between all shader stages, but they are not accessible outside of the shader." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:396 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:402 msgid "Constants of the ``float`` type must be initialized using ``.`` notation after the decimal part or by using the scientific notation. The optional ``f`` post-suffix is also supported." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:406 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:412 msgid "Constants of the ``uint`` (unsigned int) type must have a ``u`` suffix to differentiate them from signed integers. Alternatively, this can be done by using the ``uint(x)`` built-in conversion function." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:415 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:423 msgid "Structs" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:417 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:425 msgid "Structs are compound types which can be used for better abstraction of shader code. You can declare them at the global scope like:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:428 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:436 msgid "After declaration, you can instantiate and initialize them like:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:440 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:448 msgid "Or use struct constructor for same purpose:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:446 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:454 msgid "Structs may contain other struct or array, you can also instance them as global constant:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:466 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:474 msgid "You can also pass them to functions:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:484 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:492 msgid "Operators" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:486 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:494 msgid "Godot shading language supports the same set of operators as GLSL ES 3.0. Below is the list of them in precedence order:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:493 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:501 msgid "Precedence" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:493 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:501 msgid "Class" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:493 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:501 msgid "Operator" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:495 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:503 msgid "1 (highest)" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:495 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:503 msgid "parenthetical grouping" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:495 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:503 msgid "**()**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:497 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:505 msgid "2" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:497 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:505 msgid "unary" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:497 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:505 msgid "**+, -, !, ~**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:499 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:507 msgid "3" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:499 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:507 msgid "multiplicative" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:499 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:507 msgid "**/, \\*, %**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:501 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:509 msgid "4" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:501 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:509 msgid "additive" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:501 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:509 msgid "**+, -**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:503 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:511 msgid "5" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:503 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:511 msgid "bit-wise shift" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:503 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:511 msgid "**<<, >>**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:505 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:513 msgid "6" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:505 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:513 msgid "relational" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:505 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:513 msgid "**<, >, <=, >=**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:507 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:515 msgid "7" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:507 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:515 msgid "equality" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:507 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:515 msgid "**==, !=**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:509 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:517 msgid "8" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:509 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:517 msgid "bit-wise AND" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:509 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:517 msgid "**&**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:511 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:519 msgid "9" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:511 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:519 msgid "bit-wise exclusive OR" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:511 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:519 msgid "**^**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:513 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:521 msgid "10" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:513 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:521 msgid "bit-wise inclusive OR" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:513 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:521 msgid "**|**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:515 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:523 msgid "11" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:515 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:523 msgid "logical AND" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:515 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:523 msgid "**&&**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:517 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:525 msgid "12 (lowest)" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:517 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:525 msgid "logical inclusive OR" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:517 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:525 msgid "**||**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:522 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:530 msgid "Most operators that accept vectors or matrices (multiplication, division, etc) operate component-wise, meaning the function is applied to the first value of each vector and then on the second value of each vector, etc. Some examples:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:530 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:538 msgid "Operation" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:530 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:538 msgid "Equivalent Scalar Operation" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:532 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:540 msgid "``vec3(4, 5, 6) + 2``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:532 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:540 msgid "``vec3(4 + 2, 5 + 2, 6 + 2)``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:534 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:542 msgid "``vec2(3, 4) * vec2(10, 20)``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:534 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:542 msgid "``vec2(3 * 10, 4 * 20)``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:536 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:544 msgid "``mat2(vec2(1, 2), vec2(3, 4)) + 10``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:536 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:544 msgid "``mat2(vec2(1 + 10, 2 + 10), vec2(3 + 10, 4 + 10))``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:539 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:547 msgid "The `GLSL Language Specification `_ says under section 5.10 Vector and Matrix Operations:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:541 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:549 msgid "With a few exceptions, operations are component-wise. Usually, when an operator operates on a vector or matrix, it is operating independently on each component of the vector or matrix, in a component-wise fashion. [...] The exceptions are matrix multiplied by vector, vector multiplied by matrix, and matrix multiplied by matrix. These do not operate component-wise, but rather perform the correct linear algebraic multiply." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:548 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:556 msgid "Flow control" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:550 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:558 msgid "Godot Shading language supports the most common types of flow control:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:601 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:609 msgid "Keep in mind that in modern GPUs, an infinite loop can exist and can freeze your application (including editor). Godot can't protect you from this, so be careful not to make this mistake!" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:605 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:613 msgid "Also, when comparing floating-point values against a number, make sure to compare them against a *range* instead of an exact number." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:608 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:616 msgid "A comparison like ``if (value == 0.3)`` may not evaluate to ``true``. Floating-point math is often approximate and can defy expectations. It can also behave differently depending on the hardware." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:612 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:620 msgid "**Don't** do this." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:623 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:631 msgid "Instead, always perform a range comparison with an epsilon value. The larger the floating-point number (and the less precise the floating-point number), the larger the epsilon value should be." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:634 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:642 msgid "See `floating-point-gui.de `__ for more information." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:638 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:646 msgid "Discarding" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:640 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:648 msgid "Fragment, light, and custom functions (called from fragment or light) can use the ``discard`` keyword. If used, the fragment is discarded and nothing is written." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:643 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:651 msgid "Beware that ``discard`` has a performance cost when used, as it will prevent the depth prepass from being effective on any surfaces using the shader. Also, a discarded pixel still needs to be rendered in the vertex shader, which means a shader that uses ``discard`` on all of its pixels is still more expensive to render compared to not rendering any object in the first place." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:650 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:658 msgid "Functions" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:652 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:660 msgid "It is possible to define functions in a Godot shader. They use the following syntax:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:668 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:676 msgid "You can only use functions that have been defined above (higher in the editor) the function from which you are calling them. Redefining a function that has already been defined above (or is a built-in function name) will cause an error." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:672 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:680 msgid "Function arguments can have special qualifiers:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:674 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:682 msgid "**in**: Means the argument is only for reading (default)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:675 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:683 msgid "**out**: Means the argument is only for writing." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:676 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:684 msgid "**inout**: Means the argument is fully passed via reference." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:677 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:685 msgid "**const**: Means the argument is a constant and cannot be changed, may be combined with **in** qualifier." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:680 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:688 msgid "Example below:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:688 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:696 msgid "Function overloading is supported. You can define multiple functions with the same name, but different arguments. Note that `implicit casting `_ in overloaded function calls is not allowed, such as from ``int`` to ``float`` (``1`` to ``1.0``)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:708 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:716 msgid "Varyings" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:710 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:718 msgid "To send data from the vertex to the fragment (or light) processor function, *varyings* are used. They are set for every primitive vertex in the *vertex processor*, and the value is interpolated for every pixel in the *fragment processor*." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:732 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:740 msgid "Varying can also be an array:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:749 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:757 msgid "It's also possible to send data from *fragment* to *light* processors using *varying* keyword. To do so you can assign it in the *fragment* and later use it in the *light* function." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:765 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:773 msgid "Note that varying may not be assigned in custom functions or a *light processor* function like:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:785 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:793 msgid "This limitation was introduced to prevent incorrect usage before initialization." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:788 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:796 msgid "Interpolation qualifiers" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:790 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:798 msgid "Certain values are interpolated during the shading pipeline. You can modify how these interpolations are done by using *interpolation qualifiers*." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:807 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:815 msgid "There are two possible interpolation qualifiers:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:810 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:818 msgid "Qualifier" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:812 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:820 msgid "**flat**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:812 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:820 msgid "The value is not interpolated." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:814 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:822 msgid "**smooth**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:814 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:822 msgid "The value is interpolated in a perspective-correct fashion. This is the default." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:820 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:828 msgid "Uniforms" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:822 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:830 msgid "Passing values to shaders is possible with *uniforms*, which are defined in the global scope of the shader, outside of functions. When a shader is later assigned to a material, the uniforms will appear as editable parameters in the material's inspector. Uniforms can't be written from within the shader. Any :ref:`data type ` except for ``void`` can be a uniform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:836 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:844 msgid "You can set uniforms in the editor in the material's inspector. Alternately, you can set them :ref:`from code `." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:840 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:848 msgid "Uniform hints" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:842 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:850 msgid "Godot provides optional uniform hints to make the compiler understand what the uniform is used for, and how the editor should allow users to modify it." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:854 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:862 msgid "Uniforms can also be assigned default values:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:863 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:871 msgid "Note that when adding a default value and a hint, the default value goes after the hint." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:865 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:873 msgid "Full list of uniform hints below:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:868 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:876 msgid "Hint" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:870 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:878 msgid "**vec3, vec4**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:870 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:876 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:878 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:884 msgid "source_color" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:870 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:878 msgid "Used as color." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:872 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:880 msgid "hint_enum(\"String1\", \"String2\")" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:872 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:880 msgid "Displays int input as a dropdown widget in the editor." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:874 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:882 msgid "**int, float**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:874 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:882 msgid "hint_range(min, max[, step])" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:874 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:882 msgid "Restricted to values in a range (with min/max/step)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:876 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:884 msgid "Used as albedo color." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:878 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:886 msgid "hint_normal" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:878 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:886 msgid "Used as normalmap." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:880 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:888 msgid "hint_default_white" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:880 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:888 msgid "As value or albedo color, default to opaque white." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:882 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:890 msgid "hint_default_black" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:882 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:890 msgid "As value or albedo color, default to opaque black." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:884 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:892 msgid "hint_default_transparent" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:884 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:892 msgid "As value or albedo color, default to transparent black." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:886 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:894 msgid "hint_anisotropy" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:886 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:894 msgid "As flowmap, default to right." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:888 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:896 msgid "hint_roughness[_r, _g, _b, _a, _normal, _gray]" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:888 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:896 msgid "Used for roughness limiter on import (attempts reducing specular aliasing). ``_normal`` is a normal map that guides the roughness limiter, with roughness increasing in areas that have high-frequency detail." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:892 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:900 msgid "filter[_nearest, _linear][_mipmap][_anisotropic]" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:892 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:900 msgid "Enabled specified texture filtering." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:894 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:902 msgid "repeat[_enable, _disable]" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:894 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:902 msgid "Enabled texture repeating." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:896 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:904 msgid "hint_screen_texture" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:896 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:904 msgid "Texture is the screen texture." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:898 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:906 msgid "hint_depth_texture" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:898 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:906 msgid "Texture is the depth texture." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:900 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:908 msgid "hint_normal_roughness_texture" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:900 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:908 msgid "Texture is the normal roughness texture (only supported in Forward+)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:904 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:912 msgid "Using ``hint_enum``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:906 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:914 msgid "You can access ``int`` values as a readable dropdown widget using the ``hint_enum`` uniform:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:912 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:920 msgid "You can assign explicit values to the ``hint_enum`` uniform using colon syntax similar to GDScript:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:918 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:926 msgid "The value will be stored as an integer, corresponding to the index of the selected option (i.e. ``0``, ``1``, or ``2``) or the value assigned by colon syntax (i.e. ``30``, ``60``, or ``200``). When setting the value with ``set_shader_parameter()``, you must use the integer value, not the ``String`` name." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:925 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:933 msgid "Using ``source_color``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:927 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:935 msgid "Any texture which contains *sRGB color data* requires a ``source_color`` hint in order to be correctly sampled. This is because Godot renders in linear color space, but some textures contain sRGB color data. If this hint is not used, the texture will appear washed out." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:932 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:940 msgid "Albedo and color textures should typically have a ``source_color`` hint. Normal, roughness, metallic, and height textures typically do not need a ``source_color`` hint." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:936 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:944 msgid "Using ``source_color`` hint is required in the Forward+ and Mobile renderers, and in ``canvas_item`` shaders when :ref:`HDR 2D` is enabled. The ``source_color`` hint is optional for the Compatibility renderer, and for ``canvas_item`` shaders if ``HDR 2D`` is disabled. However, it is recommended to always use the ``source_color`` hint, because it works even if you change renderers or disable ``HDR 2D``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:944 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:952 msgid "Uniform groups" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:946 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:954 msgid "To group multiple uniforms in a section in the inspector, you can use a ``group_uniform`` keyword like this:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:954 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:962 msgid "You can close the group by using:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:960 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:968 msgid "The syntax also supports subgroups (it's not mandatory to declare the base group before this):" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:969 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:977 msgid "Global uniforms" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:971 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:979 msgid "Sometimes, you want to modify a parameter in many different shaders at once. With a regular uniform, this takes a lot of work as all these shaders need to be tracked and the uniform needs to be set for each of them. Global uniforms allow you to create and update uniforms that will be available in all shaders, in every shader type (``canvas_item``, ``spatial``, ``particles``, ``sky`` and ``fog``)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:978 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:986 msgid "Global uniforms are especially useful for environmental effects that affect many objects in a scene, like having foliage bend when the player is nearby, or having objects move with the wind." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:982 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:990 msgid "*Global uniforms* are not the same as *global scope* for an individual shader. While regular uniforms are defined outside of shader functions and are therefore the global scope of the shader, global uniforms are global to all shaders in the entire project (but within each shader, are also in the global scope)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:988 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:996 msgid "To create a global uniform, open the **Project Settings** then go to the **Shader Globals** tab. Specify a name for the uniform (case-sensitive) and a type, then click **Add** in the top-right corner of the dialog. You can then edit the value assigned to the uniform by clicking the value in the list of uniforms:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:994 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:998 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1002 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1006 msgid "Adding a global uniform in the Shader Globals tab of the Project Settings" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1000 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1008 msgid "After creating a global uniform, you can use it in a shader as follows:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1012 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1020 msgid "Note that the global uniform *must* exist in the Project Settings at the time the shader is saved, or compilation will fail. While you can assign a default value using ``global uniform vec4 my_color = ...`` in the shader code, it will be ignored as the global uniform must always be defined in the Project Settings anyway." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1018 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1026 msgid "To change the value of a global uniform at runtime, use the :ref:`RenderingServer.global_shader_parameter_set ` method in a script:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1026 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1034 msgid "Assigning global uniform values can be done as many times as desired without impacting performance, as setting data doesn't require synchronization between the CPU and GPU." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1030 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1038 msgid "You can also add or remove global uniforms at runtime:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1037 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1045 msgid "Adding or removing global uniforms at runtime has a performance cost, although it's not as pronounced compared to getting global uniform values from a script (see the warning below)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1043 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1051 msgid "While you *can* query the value of a global uniform at runtime in a script using ``RenderingServer.global_shader_parameter_get(\"uniform_name\")``, this has a large performance penalty as the rendering thread needs to synchronize with the calling thread." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1048 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1056 msgid "Therefore, it's not recommended to read global shader uniform values continuously in a script. If you need to read values in a script after setting them, consider creating an :ref:`autoload ` where you store the values you need to query at the same time you're setting them as global uniforms." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1057 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1065 msgid "Per-instance uniforms" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1061 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1069 msgid "Per-instance uniforms are available in both ``canvas_item`` (2D) and ``spatial`` (3D) shaders." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1063 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1071 msgid "Sometimes, you want to modify a parameter on each node using the material. As an example, in a forest full of trees, when you want each tree to have a slightly different color that is editable by hand. Without per-instance uniforms, this requires creating a unique material for each tree (each with a slightly different hue). This makes material management more complex, and also has a performance overhead due to the scene requiring more unique material instances. Vertex colors could also be used here, but they'd require creating unique copies of the mesh for each different color, which also has a performance overhead." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1072 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1080 msgid "Per-instance uniforms are set on each GeometryInstance3D, rather than on each Material instance. Take this into account when working with meshes that have multiple materials assigned to them, or MultiMesh setups." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1088 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1096 msgid "After saving the shader, you can change the per-instance uniform's value using the inspector:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1091 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1095 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1099 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1103 msgid "Setting a per-instance uniform's value in the GeometryInstance3D section of the inspector" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1097 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1105 msgid "Per-instance uniform values can also be set at runtime using :ref:`set_instance_shader_parameter ` method on a node that inherits from :ref:`class_GeometryInstance3D`:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1105 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1113 msgid "When using per-instance uniforms, there are some restrictions you should be aware of:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1107 -msgid "**Per-instance uniforms do not support textures or arrays**, only regular scalar and vector types. As a workaround, you can pass a texture array as a regular uniform, then pass the index of the texture to be drawn using a per-instance uniform." +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1115 +msgid "**Per-instance uniforms do not support textures or arrays**, only regular scalar and vector types." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1111 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1119 +msgid "Due to GLSL limitations, you cannot directly index a texture array using a per-instance uniform. Sampler arrays can only be indexed by compile-time constant expressions." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1123 +msgid "As a workaround, pass a texture array as a regular uniform and the desired texture index as a per-instance uniform. Then use a ``switch`` statement to select the texture:" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1152 msgid "There is a practical maximum limit of 16 instance uniforms per shader." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1112 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1153 msgid "If your mesh uses multiple materials, the parameters for the first mesh material found will \"win\" over the subsequent ones, unless they have the same name, index *and* type. In this case, all parameters are affected correctly." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1115 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1156 msgid "If you run into the above situation, you can avoid clashes by manually specifying the index (0-15) of the instance uniform by using the ``instance_index`` hint:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1126 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1167 msgid "Setting uniforms from code" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1128 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1169 msgid "You can set uniforms from GDScript using the :ref:`set_shader_parameter() ` method:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1138 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1179 msgid "The first argument to ``set_shader_parameter()`` is the name of the uniform in the shader. It must match *exactly* to the name of the uniform in the shader or else it will not be recognized." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1142 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1183 msgid "GDScript uses different variable types than GLSL does, so when passing variables from GDScript to shaders, Godot converts the type automatically. Below is a table of the corresponding types:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1147 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1188 msgid "GLSL type" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1147 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1188 msgid "GDScript type" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1147 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1188 msgid "Notes" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1151 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1161 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1163 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1192 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1202 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1204 msgid "Bitwise packed int where bit 0 (LSB) corresponds to x." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1153 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1194 msgid "For example, a bvec2 of (bx, by) could be created in the following way:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1167 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1175 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1208 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1216 msgid "**Vector2i**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1169 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1177 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1210 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1218 msgid "**Vector3i**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1171 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1179 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1212 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1220 msgid "**Vector4i**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1183 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1224 msgid "**Vector2**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1185 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1226 msgid "**Vector3**, **Color**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1185 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1226 msgid "When Color is used, it will be interpreted as (r, g, b)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1187 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1228 msgid "**Vector4**, **Color**, **Rect2**, **Plane**, **Quaternion**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1187 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1228 msgid "When Color is used, it will be interpreted as (r, g, b, a)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1189 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1230 msgid "When Rect2 is used, it will be interpreted as (position.x, position.y, size.x, size.y)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1192 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1233 msgid "When Plane is used it will be interpreted as (normal.x, normal.y, normal.z, d)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1197 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1238 msgid "**Transform2D**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1200 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1241 msgid "**Basis**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1202 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1243 msgid "**Projection**, **Transform3D**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1202 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1243 msgid "When a Transform3D is used, the w Vector is set to the identity." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1205 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1207 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1209 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1246 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1248 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1250 msgid "**Texture2D**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1211 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1213 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1215 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1252 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1254 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1256 msgid "**Texture2DArray**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1217 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1219 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1221 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1258 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1260 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1262 msgid "**Texture3D**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1223 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1264 msgid "**Cubemap**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1223 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1264 msgid "See :ref:`doc_importing_images_changing_import_type` for instructions on importing cubemaps for use in Godot." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1226 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1267 msgid "**CubemapArray**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1226 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1267 msgid "Only supported in Forward+ and Mobile, not Compatibility." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1228 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1269 msgid "**ExternalTexture**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1228 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1269 msgid "Only supported in Compatibility/Android platform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1231 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1272 msgid "Be careful when setting shader uniforms from GDScript, since no error will be thrown if the type does not match. Your shader will just exhibit undefined behavior. Specifically, this includes setting a GDScript int/float (64 bit) into a Godot shader language int/float (32 bit). This may lead to unintended consequences in cases where high precision is required." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1239 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1280 msgid "Uniform limits" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1241 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1282 msgid "There is a limit to the total size of shader uniforms that you can use in a single shader. On most desktop platforms, this limit is ``65536`` bytes, or 4096 ``vec4`` uniforms. On mobile platforms, the limit is typically ``16384`` bytes, or 1024 ``vec4`` uniforms. Vector uniforms smaller than a ``vec4``, such as ``vec2`` or ``vec3``, are padded to the size of a ``vec4``. Scalar uniforms such as ``int`` or ``float`` are not padded, and ``bool`` is padded to the size of an ``int``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1249 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1290 msgid "Arrays count as the total size of their contents. If you need a uniform array that is larger than this limit, consider packing the data into a texture instead, since the *contents* of a texture do not count towards this limit, only the size of the sampler uniform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1255 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1296 msgid "Built-in variables" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1257 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1298 msgid "A large number of built-in variables are available, like ``UV``, ``COLOR`` and ``VERTEX``. What variables are available depends on the type of shader (``spatial``, ``canvas_item``, ``particle``, etc) and the function used (``vertex``, ``fragment``, ``light``, ``start``, ``process``, ``sky``, or ``fog``). For a list of the built-in variables that are available, please see the corresponding pages:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1264 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1305 msgid ":ref:`Spatial shaders `" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1265 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1306 msgid ":ref:`Canvas item shaders `" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1266 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1307 msgid ":ref:`Particle shaders `" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1267 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1308 msgid ":ref:`Sky shaders `" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1268 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1309 msgid ":ref:`Fog shaders `" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1271 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1312 msgid "Built-in functions" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1273 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1314 msgid "A large number of built-in functions are supported, conforming to GLSL ES 3.0. See the :ref:`Built-in functions ` page for details." msgstr "" diff --git a/sphinx/templates/tutorials/shaders/shader_reference/sky_shader.pot b/sphinx/templates/tutorials/shaders/shader_reference/sky_shader.pot index a415d6d417..49dd6cc62d 100644 --- a/sphinx/templates/tutorials/shaders/shader_reference/sky_shader.pot +++ b/sphinx/templates/tutorials/shaders/shader_reference/sky_shader.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -159,7 +159,7 @@ msgid "in float **TIME**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:157 -msgid "Global time since the engine has started, in seconds. It repeats after every ``3,600`` seconds (which can be changed with the :ref:`rollover` setting). It's affected by :ref:`time_scale` but not by pausing. If you need a ``TIME`` variable that is not affected by time scale, add your own :ref:`global shader uniform` and update it each frame." +msgid "Global time since the engine has started, in seconds. It repeats after every ``3,600`` seconds (which can be changed with the :ref:`rollover` setting). It's affected by :ref:`time_scale` but not by pausing. If you need a ``TIME`` variable that is not affected by time scale, add your own :ref:`global shader uniform` and update it each frame." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:165 @@ -175,7 +175,7 @@ msgid "samplerCube **RADIANCE**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:167 -msgid "Radiance cubemap. Can only be read from during background pass. Check ``!AT_CUBEMAP_PASS`` before using." +msgid "Radiance cubemap. Can only be read from during the background pass. Check ``!AT_CUBEMAP_PASS`` before using." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:169 @@ -183,7 +183,7 @@ msgid "in bool **AT_HALF_RES_PASS**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:169 -msgid "``true`` when rendering to half resolution pass." +msgid "``true`` when rendering to the half resolution pass." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:171 @@ -191,7 +191,7 @@ msgid "in bool **AT_QUARTER_RES_PASS**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:171 -msgid "``true`` when rendering to quarter resolution pass." +msgid "``true`` when rendering to the quarter resolution pass." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:173 @@ -199,7 +199,7 @@ msgid "in bool **AT_CUBEMAP_PASS**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:173 -msgid "``true`` when rendering to radiance cubemap." +msgid "``true`` when rendering to the radiance cubemap." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:175 @@ -247,7 +247,7 @@ msgid "in float **PI**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:186 -msgid "A ``PI`` constant (``3.141592``). A ratio of a circle's circumference to its diameter and amount of radians in half turn." +msgid "A ``PI`` constant (``3.141592``). The ratio of a circle's circumference to its diameter and the number of radians in a half turn." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:189 @@ -255,7 +255,7 @@ msgid "in float **TAU**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:189 -msgid "A ``TAU`` constant (``6.283185``). An equivalent of ``PI * 2`` and amount of radians in full turn." +msgid "A ``TAU`` constant (``6.283185``). Equivalent to ``PI * 2`` and the number of radians in a full turn." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:192 @@ -263,7 +263,7 @@ msgid "in float **E**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:192 -msgid "An ``E`` constant (``2.718281``). Euler's number and a base of the natural logarithm." +msgid "An ``E`` constant (``2.718281``). Euler's number, the base of the natural logarithm." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:197 @@ -275,7 +275,7 @@ msgid "in vec3 **EYEDIR**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:202 -msgid "Normalized direction of current pixel. Use this as your basic direction for procedural effects." +msgid "Normalized direction of the current pixel. Use this as your basic direction for procedural effects." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:204 @@ -283,7 +283,7 @@ msgid "in vec2 **SCREEN_UV**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:204 -msgid "Screen UV coordinate for current pixel. Used to map a texture to the full screen." +msgid "Screen UV coordinate for the current pixel. Used to map a texture to the full screen." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:206 @@ -299,7 +299,7 @@ msgid "in vec4 **HALF_RES_COLOR**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:208 -msgid "Color value of corresponding pixel from half resolution pass. Uses linear filter." +msgid "Color value of the corresponding pixel from the half resolution pass. Uses linear filter." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:210 @@ -307,7 +307,7 @@ msgid "in vec4 **QUARTER_RES_COLOR**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:210 -msgid "Color value of corresponding pixel from quarter resolution pass. Uses linear filter." +msgid "Color value of the corresponding pixel from the quarter resolution pass. Uses linear filter." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:212 diff --git a/sphinx/templates/tutorials/shaders/shader_reference/spatial_shader.pot b/sphinx/templates/tutorials/shaders/shader_reference/spatial_shader.pot index ce0a55d502..89b0511de3 100644 --- a/sphinx/templates/tutorials/shaders/shader_reference/spatial_shader.pot +++ b/sphinx/templates/tutorials/shaders/shader_reference/spatial_shader.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -20,1272 +20,1417 @@ msgid "Spatial shaders" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:6 -msgid "Spatial shaders are used for shading 3D objects. They are the most complex type of shader Godot offers. Spatial shaders are highly configurable with different render modes and different rendering options (e.g. Subsurface Scattering, Transmission, Ambient Occlusion, Rim lighting etc). Users can optionally write vertex, fragment, and light processor functions to affect how objects are drawn." +msgid "Spatial shaders are used for shading 3D objects. They are the most complex type of shader Godot offers. Spatial shaders are highly configurable with different render modes and different rendering options (e.g. Subsurface Scattering, Transmission, Ambient Occlusion, Rim lighting, etc.). Users can optionally write vertex, fragment, and light processor functions to affect how objects are drawn." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:12 msgid "Render modes" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:13 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:14 msgid "For visual examples of these render modes, see :ref:`Standard Material 3D and ORM Material 3D`." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:16 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:17 msgid "Render mode" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:16 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:110 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:178 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:288 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:478 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:17 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:128 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:168 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:236 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:359 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:549 msgid "Description" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:18 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:19 msgid "**blend_mix**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:18 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:19 msgid "Mix blend mode (alpha is transparency), default." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:20 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:21 msgid "**blend_add**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:20 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:21 msgid "Additive blend mode." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:22 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:23 msgid "**blend_sub**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:22 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:23 msgid "Subtractive blend mode." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:24 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:25 msgid "**blend_mul**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:24 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:25 msgid "Multiplicative blend mode." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:26 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:27 msgid "**blend_premul_alpha**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:26 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:27 msgid "Premultiplied alpha blend mode (fully transparent = add, fully opaque = mix)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:28 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:29 msgid "**depth_draw_opaque**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:28 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:29 msgid "Only draw depth for opaque geometry (not transparent)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:30 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:31 msgid "**depth_draw_always**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:30 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:31 msgid "Always draw depth (opaque and transparent)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:32 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:33 msgid "**depth_draw_never**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:32 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:33 msgid "Never draw depth." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:34 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:35 msgid "**depth_prepass_alpha**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:34 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:35 msgid "Do opaque depth pre-pass for transparent geometry." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:36 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:37 msgid "**depth_test_disabled**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:36 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:37 msgid "Disable depth testing." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:38 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:39 +msgid "**depth_test_default**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:39 +msgid "Depth test will discard the pixel if it is behind other pixels. In Forward+ only, the pixel is also discarded if it's at the exact same depth as another pixel." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:42 +msgid "**depth_test_inverted**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:42 +msgid "Depth test will discard the pixel if it is in front of other pixels. Useful for stencil effects." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:44 msgid "**sss_mode_skin**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:38 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:44 msgid "Subsurface Scattering mode for skin (optimizes visuals for human skin, e.g. boosted red channel)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:40 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:46 msgid "**cull_back**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:40 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:46 msgid "Cull back-faces (default)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:42 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:48 msgid "**cull_front**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:42 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:48 msgid "Cull front-faces." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:44 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:50 msgid "**cull_disabled**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:44 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:50 msgid "Culling disabled (double sided)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:46 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:52 msgid "**unshaded**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:46 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:52 msgid "Result is just albedo. No lighting/shading happens in material, making it faster to render." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:48 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:54 msgid "**wireframe**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:48 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:54 msgid "Geometry draws using lines (useful for troubleshooting)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:50 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:56 msgid "**debug_shadow_splits**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:50 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:56 msgid "Directional shadows are drawn using different colors for each split (useful for troubleshooting)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:52 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:58 msgid "**diffuse_burley**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:52 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:58 msgid "Burley (Disney PBS) for diffuse (default)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:54 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:60 msgid "**diffuse_lambert**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:54 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:60 msgid "Lambert shading for diffuse." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:56 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:62 msgid "**diffuse_lambert_wrap**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:56 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:62 msgid "Lambert-wrap shading (roughness-dependent) for diffuse." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:58 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:64 msgid "**diffuse_toon**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:58 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:64 msgid "Toon shading for diffuse." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:60 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:66 msgid "**specular_schlick_ggx**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:60 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:66 msgid "Schlick-GGX for direct light specular lobes (default)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:62 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:68 msgid "**specular_toon**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:62 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:68 msgid "Toon for direct light specular lobes." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:64 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:70 msgid "**specular_disabled**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:64 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:70 msgid "Disable direct light specular lobes. Doesn't affect reflected light (use ``SPECULAR = 0.0`` instead)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:66 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:72 msgid "**skip_vertex_transform**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:66 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:72 msgid "``VERTEX``, ``NORMAL``, ``TANGENT``, and ``BITANGENT`` need to be transformed manually in the ``vertex()`` function." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:69 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:75 msgid "**world_vertex_coords**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:69 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:75 msgid "``VERTEX``, ``NORMAL``, ``TANGENT``, and ``BITANGENT`` are modified in world space instead of model space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:72 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:78 msgid "**ensure_correct_normals**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:72 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:78 msgid "Use when non-uniform scale is applied to mesh *(note: currently unimplemented)*." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:74 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:80 msgid "**shadows_disabled**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:74 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:80 msgid "Disable computing shadows in shader. The shader will not receive shadows, but can still cast them." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:76 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:82 msgid "**ambient_light_disabled**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:76 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:82 msgid "Disable contribution from ambient light and radiance map." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:78 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:84 msgid "**shadow_to_opacity**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:78 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:84 msgid "Lighting modifies the alpha so shadowed areas are opaque and non-shadowed areas are transparent. Useful for overlaying shadows onto a camera feed in AR." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:82 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:88 msgid "**vertex_lighting**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:82 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:88 msgid "Use vertex-based lighting instead of per-pixel lighting." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:84 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:90 msgid "**particle_trails**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:84 -msgid "Enables the trails when used on particles geometry." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:90 +msgid "Enables the trails when used on particle geometry." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:86 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:92 msgid "**alpha_to_coverage**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:86 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:88 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:92 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:94 msgid "Alpha antialiasing mode, see `here `_ for more." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:88 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:94 msgid "**alpha_to_coverage_and_one**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:90 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:96 msgid "**fog_disabled**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:90 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:96 msgid "Disable receiving depth-based or volumetric fog. Useful for ``blend_add`` materials like particles." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:94 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:100 +msgid "Stencil modes" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:104 +msgid "Stencil support is experimental, use at your own risk. We will try to not break compatibility as much as possible, but if significant flaws are found in the API, it may change in the next minor version." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:109 +msgid "Stencil operations are a set of operations that allow writing to an efficient buffer in an hardware-accelerated manner. This is generally used to mask in or out parts of the scene." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:113 +msgid "Some of the most well-known uses are:" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:115 +msgid "Outlines: Mask out the inner mesh that is being outlined to avoid inner outlines." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:116 +msgid "X-Ray: Display a mesh behind other objects." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:117 +msgid "Portals: Draw geometry that is normally \"impossible\" (non-Euclidian) by masking objects." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:121 +msgid "You can only read from the stencil buffer in the transparent pass. Any attempt to read in the opaque pass will fail, as it's currently not supported behavior." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:124 +msgid "Note that for compositor effects, the main renderer's stencil buffer can't be copied to a custom texture." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:128 +msgid "Stencil mode" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:130 +msgid "**read**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:130 +msgid "Read from the stencil buffer." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:132 +msgid "**write**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:132 +msgid "Write reference value to the stencil buffer." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:134 +msgid "**write_if_depth_fail**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:134 +msgid "Write reference value to the stencil buffer if the depth test fails." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:136 +msgid "**compare_always**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:136 +msgid "Always pass stencil test." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:138 +msgid "**compare_equal**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:138 +msgid "Pass stencil test if the reference value is equal to the stencil buffer value." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:140 +msgid "**compare_not_equal**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:140 +msgid "Pass stencil test if the reference value is not equal to the stencil buffer value." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:142 +msgid "**compare_less**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:142 +msgid "Pass stencil test if the reference value is less than the stencil buffer value." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:144 +msgid "**compare_less_or_equal**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:144 +msgid "Pass stencil test if the reference value is less than or equal to the stencil buffer value." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:146 +msgid "**compare_greater**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:146 +msgid "Pass stencil test if the reference value is greater than the stencil buffer value." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:148 +msgid "**compare_greater_or_equal**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:148 +msgid "Pass stencil test if the reference value is greater than or equal to the stencil buffer value." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:152 msgid "Built-ins" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:96 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:154 msgid "Values marked as ``in`` are read-only. Values marked as ``out`` can optionally be written to and will not necessarily contain sensible values. Values marked as ``inout`` provide a sensible default value, and can optionally be written to. Samplers cannot be written to so they are not marked." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:100 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:158 msgid "Not all built-ins are available in all processing functions. To access a vertex built-in from the ``fragment()`` function, you can use a :ref:`varying `. The same applies for accessing fragment built-ins from the ``light()`` function." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:105 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:163 msgid "Global built-ins" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:107 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:165 msgid "Global built-ins are available everywhere, including custom functions." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:110 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:178 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:288 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:478 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:168 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:236 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:359 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:549 msgid "Built-in" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:112 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:170 msgid "in float **TIME**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:112 -msgid "Global time since the engine has started, in seconds. It repeats after every ``3,600`` seconds (which can be changed with the :ref:`rollover` setting). It's affected by :ref:`time_scale` but not by pausing. If you need a ``TIME`` variable that is not affected by time scale, add your own :ref:`global shader uniform` and update it each frame." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:170 +msgid "Global time since the engine has started, in seconds. It repeats after every ``3,600`` seconds (which can be changed with the :ref:`rollover` setting). It's affected by :ref:`time_scale` but not by pausing. If you need a ``TIME`` variable that is not affected by time scale, add your own :ref:`global shader uniform` and update it each frame." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:120 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:178 msgid "in float **PI**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:120 -msgid "A ``PI`` constant (``3.141592``). A ratio of a circle's circumference to its diameter and amount of radians in half turn." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:178 +msgid "A ``PI`` constant (``3.141592``). The ratio of a circle's circumference to its diameter and the number of radians in a half turn." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:123 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:181 msgid "in float **TAU**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:123 -msgid "A ``TAU`` constant (``6.283185``). An equivalent of ``PI * 2`` and amount of radians in full turn." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:181 +msgid "A ``TAU`` constant (``6.283185``). Equivalent to ``PI * 2`` and the number of radians in a full turn." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:126 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:184 msgid "in float **E**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:126 -msgid "An ``E`` constant (``2.718281``). Euler's number and a base of the natural logarithm." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:184 +msgid "An ``E`` constant (``2.718281``). Euler's number, the base of the natural logarithm." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:128 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:186 msgid "in bool **OUTPUT_IS_SRGB**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:128 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:186 msgid "``true`` when output is in sRGB color space (this is ``true`` in the Compatibility renderer, ``false`` in Forward+ and Mobile)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:131 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:189 msgid "in float **CLIP_SPACE_FAR**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:131 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:189 msgid "Clip space far ``z`` value. In the Forward+ or Mobile renderers, it's ``0.0``. In the Compatibility renderer, it's ``-1.0``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:137 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:195 msgid "Vertex built-ins" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:139 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:197 msgid "Vertex data (``VERTEX``, ``NORMAL``, ``TANGENT``, and ``BITANGENT``) are presented in model space (also called local space). If not written to, these values will not be modified and be passed through as they came, then transformed into view space to be used in ``fragment()``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:143 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:201 msgid "They can optionally be presented in world space by using the ``world_vertex_coords`` render mode." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:145 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:203 msgid "Users can disable the built-in modelview transform (projection will still happen later) and do it manually with the following code:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:160 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:218 msgid "Other built-ins, such as ``UV``, ``UV2``, and ``COLOR``, are also passed through to the ``fragment()`` function if not modified." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:162 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:220 msgid "Users can override the modelview and projection transforms using the ``POSITION`` built-in. If ``POSITION`` is written to anywhere in the shader, it will always be used, so the user becomes responsible for ensuring that it always has an acceptable value. When ``POSITION`` is used, the value from ``VERTEX`` is ignored and projection does not happen. However, the value passed to the fragment shader still comes from ``VERTEX``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:167 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:225 msgid "For instancing, the ``INSTANCE_CUSTOM`` variable contains the instance custom data. When using particles, this information is usually:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:170 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:228 msgid "**x**: Rotation angle in radians." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:171 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:229 msgid "**y**: Phase during lifetime (``0.0`` to ``1.0``)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:172 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:230 msgid "**z**: Animation frame." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:174 -msgid "This allows you to easily adjust the shader to a particle system using default particles material. When writing a custom particle shader, this value can be used as desired." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:232 +msgid "This allows you to easily adjust the shader to a particle system using default particle material. When writing a custom particle shader, this value can be used as desired." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:180 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:290 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:480 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:238 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:361 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:551 msgid "in vec2 **VIEWPORT_SIZE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:180 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:290 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:480 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:238 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:361 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:551 msgid "Size of viewport (in pixels)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:182 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:315 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:491 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:240 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:386 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:562 msgid "in mat4 **VIEW_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:182 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:315 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:491 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:240 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:386 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:562 msgid "World space to view space transform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:184 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:317 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:489 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:242 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:388 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:560 msgid "in mat4 **INV_VIEW_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:184 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:317 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:489 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:242 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:388 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:560 msgid "View space to world space transform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:186 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:244 msgid "in mat4 **MAIN_CAM_INV_VIEW_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:186 -msgid "View space to world space transform of camera used to draw the current viewport." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:244 +msgid "View space to world space transform of the camera used to draw the current viewport." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:189 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:321 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:495 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:247 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:392 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:566 msgid "in mat4 **INV_PROJECTION_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:189 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:321 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:495 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:247 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:392 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:566 msgid "Clip space to view space transform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:191 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:323 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:249 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:394 msgid "in vec3 **NODE_POSITION_WORLD**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:191 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:323 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:249 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:394 msgid "Node position, in world space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:193 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:325 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:251 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:396 msgid "in vec3 **NODE_POSITION_VIEW**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:193 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:325 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:251 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:396 msgid "Node position, in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:195 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:327 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:253 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:398 msgid "in vec3 **CAMERA_POSITION_WORLD**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:195 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:327 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:253 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:398 msgid "Camera position, in world space. Represents the midpoint of the two eyes when in multiview/stereo rendering." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:199 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:330 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:257 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:401 msgid "in vec3 **CAMERA_DIRECTION_WORLD**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:199 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:330 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:257 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:401 msgid "Camera direction, in world space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:201 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:332 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:259 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:403 msgid "in uint **CAMERA_VISIBLE_LAYERS**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:201 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:332 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:259 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:403 msgid "Cull layers of the camera rendering the current pass." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:203 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:261 msgid "in int **INSTANCE_ID**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:203 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:261 msgid "Instance ID for instancing." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:205 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:263 msgid "in vec4 **INSTANCE_CUSTOM**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:205 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:263 msgid "Instance custom data (for particles, mostly)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:207 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:341 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:265 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:412 msgid "in int **VIEW_INDEX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:207 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:265 msgid "The view that we are rendering. ``VIEW_MONO_LEFT`` (``0``) for Mono (not multiview) or left eye, ``VIEW_RIGHT`` (``1``) for right eye." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:211 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:345 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:269 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:416 msgid "in int **VIEW_MONO_LEFT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:211 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:345 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:269 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:416 msgid "Constant for Mono or left eye, always ``0``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:213 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:347 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:271 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:418 msgid "in int **VIEW_RIGHT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:213 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:347 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:271 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:418 msgid "Constant for right eye, always ``1``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:215 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:349 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:273 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:420 msgid "in vec3 **EYE_OFFSET**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:215 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:349 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:273 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:420 msgid "Position offset for the eye being rendered, in view space. Only applicable for multiview rendering." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:218 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:276 msgid "inout vec3 **VERTEX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:218 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:276 msgid "Position of the vertex, in model space. In world space if ``world_vertex_coords`` is used." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:221 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:279 msgid "in int **VERTEX_ID**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:221 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:279 msgid "The index of the current vertex in the vertex buffer." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:223 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:362 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:281 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:433 msgid "inout vec3 **NORMAL**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:223 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:281 msgid "Normal in model space. In world space if ``world_vertex_coords`` is used." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:226 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:365 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:284 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:436 msgid "inout vec3 **TANGENT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:226 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:284 msgid "Tangent in model space. In world space if ``world_vertex_coords`` is used." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:229 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:368 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:287 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:439 msgid "inout vec3 **BINORMAL**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:229 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:287 msgid "Binormal in model space. In world space if ``world_vertex_coords`` is used." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:232 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:290 msgid "out vec4 **POSITION**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:232 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:290 msgid "If written to, overrides final vertex position in clip space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:235 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:293 msgid "inout vec2 **UV**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:235 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:293 msgid "UV main channel." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:237 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:295 msgid "inout vec2 **UV2**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:237 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:295 msgid "UV secondary channel." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:239 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:297 msgid "inout vec4 **COLOR**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:239 -msgid "Color from vertices." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:297 +msgid "Color from vertices. Limited to values between ``0.0`` and ``1.0`` for each channel and 8 bits per channel precision (256 possible levels). Alpha channel is supported. Values outside the allowed range are clamped, and values may be rounded due to precision limitations. Use ``CUSTOM0``-``CUSTOM3`` to pass data with more precision if needed." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:241 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:401 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:305 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:472 msgid "out float **ROUGHNESS**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:241 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:305 msgid "Roughness for vertex lighting." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:243 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:307 msgid "inout float **POINT_SIZE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:243 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:307 msgid "Point size for point rendering." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:245 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:309 msgid "inout mat4 **MODELVIEW_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:245 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:309 msgid "Model/local space to view space transform (use if possible)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:248 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:312 msgid "inout mat3 **MODELVIEW_NORMAL_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:250 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:309 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:487 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:314 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:380 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:558 msgid "in mat4 **MODEL_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:250 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:309 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:487 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:314 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:380 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:558 msgid "Model/local space to world space transform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:252 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:311 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:316 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:382 msgid "in mat3 **MODEL_NORMAL_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:254 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:318 msgid "inout mat4 **PROJECTION_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:254 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:319 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:493 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:318 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:390 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:564 msgid "View space to clip space transform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:256 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:320 msgid "in uvec4 **BONE_INDICES**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:258 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:322 msgid "in vec4 **BONE_WEIGHTS**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:260 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:324 msgid "in vec4 **CUSTOM0**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:260 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:324 msgid "Custom value from vertex primitive. When using extra UVs, ``xy`` is UV3 and ``zw`` is UV4." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:263 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:327 msgid "in vec4 **CUSTOM1**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:263 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:327 msgid "Custom value from vertex primitive. When using extra UVs, ``xy`` is UV5 and ``zw`` is UV6." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:266 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:330 msgid "in vec4 **CUSTOM2**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:266 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:330 msgid "Custom value from vertex primitive. When using extra UVs, ``xy`` is UV7 and ``zw`` is UV8." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:269 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:333 msgid "in vec4 **CUSTOM3**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:269 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:333 msgid "Custom value from vertex primitive." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:274 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:335 +msgid "out float **Z_CLIP_SCALE**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:335 +msgid "If written to, scales the vertex towards the camera to avoid clipping into things like walls. Lighting and shadows will continue to work correctly when this is written to, but screen-space effects like SSAO and SSR may break with lower scales. Try to keep this value as close to ``1.0`` as possible." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:345 msgid "``MODELVIEW_MATRIX`` combines both the ``MODEL_MATRIX`` and ``VIEW_MATRIX`` and is better suited when floating point issues may arise. For example, if the object is very far away from the world origin, you may run into floating point issues when using the separated ``MODEL_MATRIX`` and ``VIEW_MATRIX``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:278 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:349 msgid "``INV_VIEW_MATRIX`` is the matrix used for rendering the object in that pass, unlike ``MAIN_CAM_INV_VIEW_MATRIX``, which is the matrix of the camera in the scene. In the shadow pass, ``INV_VIEW_MATRIX``'s view is based on the camera that is located at the position of the light." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:281 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:352 msgid "Fragment built-ins" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:283 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:354 msgid "The default use of a Godot fragment processor function is to set up the material properties of your object and to let the built-in renderer handle the final shading. However, you are not required to use all these properties, and if you don't write to them, Godot will optimize away the corresponding functionality." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:292 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:482 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:363 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:553 msgid "in vec4 **FRAGCOORD**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:292 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:363 msgid "Coordinate of pixel center in screen space. ``xy`` specifies position in window. Origin is lower left. ``z`` specifies fragment depth. It is also used as the output value for the fragment depth unless ``DEPTH`` is written to." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:296 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:367 msgid "in bool **FRONT_FACING**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:296 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:367 msgid "``true`` if current face is front facing, ``false`` otherwise." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:298 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:505 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:369 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:576 msgid "in vec3 **VIEW**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:298 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:369 msgid "Normalized vector from fragment position to camera (in view space). This is the same for both perspective and orthogonal cameras." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:301 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:501 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:372 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:572 msgid "in vec2 **UV**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:301 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:501 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:372 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:572 msgid "UV that comes from the ``vertex()`` function." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:303 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:503 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:374 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:574 msgid "in vec2 **UV2**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:303 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:503 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:374 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:574 msgid "UV2 that comes from the ``vertex()`` function." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:305 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:376 msgid "in vec4 **COLOR**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:305 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:376 msgid "COLOR that comes from the ``vertex()`` function." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:307 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:378 msgid "in vec2 **POINT_COORD**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:307 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:378 msgid "Point coordinate for drawing points with ``POINT_SIZE``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:311 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:382 msgid "Model/local space to world space transform for normals. This is the same as ``MODEL_MATRIX`` by default unless the object is scaled non-uniformly, in which case this is set to ``transpose(inverse(mat3(MODEL_MATRIX)))``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:319 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:493 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:390 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:564 msgid "in mat4 **PROJECTION_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:334 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:405 msgid "in vec3 **VERTEX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:334 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:405 msgid "Position of the fragment (pixel), in view space. It is the ``VERTEX`` value from ``vertex()`` interpolated between the face's vertices and transformed into view space. If ``skip_vertex_transform`` is enabled, it may not be in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:338 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:409 msgid "inout vec3 **LIGHT_VERTEX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:338 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:409 msgid "A writable version of ``VERTEX`` that can be used to alter light and shadows. Writing to this will not change the position of the fragment." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:341 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:412 msgid "The view that we are rendering. Used to distinguish between views in multiview/stereo rendering. ``VIEW_MONO_LEFT`` (``0``) for Mono (not multiview) or left eye, ``VIEW_RIGHT`` (``1``) for right eye." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:352 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:423 msgid "sampler2D **SCREEN_TEXTURE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:352 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:423 msgid "Removed in Godot 4. Use a ``sampler2D`` with ``hint_screen_texture`` instead." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:354 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:499 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:425 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:570 msgid "in vec2 **SCREEN_UV**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:354 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:499 -msgid "Screen UV coordinate for current pixel." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:425 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:570 +msgid "Screen UV coordinate for the current pixel." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:356 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:427 msgid "sampler2D **DEPTH_TEXTURE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:356 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:427 msgid "Removed in Godot 4. Use a ``sampler2D`` with ``hint_depth_texture`` instead." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:358 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:429 msgid "out float **DEPTH**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:358 -msgid "Custom depth value (range of ``[0.0, 1.0]``). If ``DEPTH`` is being written to in any shader branch, then you are responsible for setting the ``DEPTH`` for **all** other branches. Otherwise, the graphics API will leave them uninitialized." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:429 +msgid "Custom depth value (range ``[0.0, 1.0]``). If ``DEPTH`` is written to in any shader branch, then you are responsible for setting ``DEPTH`` for **all** other branches. Otherwise, the graphics API will leave them uninitialized." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:362 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:433 msgid "Normal that comes from the ``vertex()`` function, in view space. If ``skip_vertex_transform`` is enabled, it may not be in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:365 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:436 msgid "Tangent that comes from the ``vertex()`` function, in view space. If ``skip_vertex_transform`` is enabled, it may not be in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:368 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:439 msgid "Binormal that comes from the ``vertex()`` function, in view space. If ``skip_vertex_transform`` is enabled, it may not be in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:371 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:442 msgid "out vec3 **NORMAL_MAP**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:371 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:442 msgid "Set normal here if reading normal from a texture instead of ``NORMAL``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:373 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:444 msgid "out float **NORMAL_MAP_DEPTH**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:373 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:444 msgid "Depth from ``NORMAL_MAP``. Defaults to ``1.0``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:375 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:446 msgid "out vec3 **ALBEDO**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:375 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:446 msgid "Albedo (default white). Base color." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:377 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:535 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:448 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:606 msgid "out float **ALPHA**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:377 -msgid "Alpha (range of ``[0.0, 1.0]``). If read from or written to, the material will go to the transparent pipeline." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:448 +msgid "Alpha (range ``[0.0, 1.0]``). If read from or written to, the material will go to the transparent pipeline." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:380 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:451 msgid "out float **ALPHA_SCISSOR_THRESHOLD**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:380 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:451 msgid "If written to, values below a certain amount of alpha are discarded." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:382 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:453 msgid "out float **ALPHA_HASH_SCALE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:382 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:453 msgid "Alpha hash scale when using the alpha hash transparency mode. Defaults to ``1.0``. Higher values result in more visible pixels in the dithering pattern." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:385 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:456 msgid "out float **ALPHA_ANTIALIASING_EDGE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:385 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:456 msgid "The threshold below which alpha to coverage antialiasing should be used. Defaults to ``0.0``. Requires the ``alpha_to_coverage`` render mode. Should be set to a value lower than ``ALPHA_SCISSOR_THRESHOLD`` to be effective." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:389 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:460 msgid "out vec2 **ALPHA_TEXTURE_COORDINATE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:389 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:460 msgid "The texture coordinate to use for alpha-to-coverge antialiasing. Requires the ``alpha_to_coverage`` render mode. Typically set to ``UV * vec2(albedo_texture_size)`` where ``albedo_texture_size`` is the size of the albedo texture in pixels." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:393 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:464 msgid "out float **PREMUL_ALPHA_FACTOR**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:393 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:464 msgid "Premultiplied alpha factor. Only effective if ``render_mode blend_premul_alpha;`` is used. This should be written to when using a *shaded* material with premultiplied alpha blending for interaction with lighting. This is not required for unshaded materials." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:397 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:468 msgid "out float **METALLIC**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:397 -msgid "Metallic (range of ``[0.0, 1.0]``)." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:468 +msgid "Metallic (range ``[0.0, 1.0]``)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:399 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:470 msgid "out float **SPECULAR**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:399 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:470 msgid "Specular (not physically accurate to change). Defaults to ``0.5``. ``0.0`` disables reflections." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:401 -msgid "Roughness (range of ``[0.0, 1.0]``)." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:472 +msgid "Roughness (range ``[0.0, 1.0]``)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:403 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:474 msgid "out float **RIM**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:403 -msgid "Rim (range of ``[0.0, 1.0]``). If used, Godot calculates rim lighting. Rim size depends on ``ROUGHNESS``." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:474 +msgid "Rim (range ``[0.0, 1.0]``). If used, Godot calculates rim lighting. Rim size depends on ``ROUGHNESS``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:406 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:477 msgid "out float **RIM_TINT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:406 -msgid "Rim Tint, range of ``0.0`` (white) to ``1.0`` (albedo). If used, Godot calculates rim lighting." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:477 +msgid "Rim Tint, range from ``0.0`` (white) to ``1.0`` (albedo). If used, Godot calculates rim lighting." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:408 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:479 msgid "out float **CLEARCOAT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:408 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:479 msgid "Small specular blob added on top of the existing one. If used, Godot calculates clearcoat." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:410 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:481 msgid "out float **CLEARCOAT_GLOSS**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:410 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:481 msgid "Gloss of clearcoat. If used, Godot calculates clearcoat." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:412 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:483 msgid "out float **ANISOTROPY**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:412 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:483 msgid "For distorting the specular blob according to tangent space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:414 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:485 msgid "out vec2 **ANISOTROPY_FLOW**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:414 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:485 msgid "Distortion direction, use with flowmaps." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:416 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:487 msgid "out float **SSS_STRENGTH**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:416 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:487 msgid "Strength of subsurface scattering. If used, subsurface scattering will be applied to the object." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:418 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:489 msgid "out vec4 **SSS_TRANSMITTANCE_COLOR**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:418 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:489 msgid "Color of subsurface scattering transmittance. If used, subsurface scattering transmittance will be applied to the object." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:421 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:492 msgid "out float **SSS_TRANSMITTANCE_DEPTH**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:421 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:492 msgid "Depth of subsurface scattering transmittance. Higher values allow the effect to reach deeper into the object." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:424 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:495 msgid "out float **SSS_TRANSMITTANCE_BOOST**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:424 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:495 msgid "Boosts the subsurface scattering transmittance if set above ``0.0``. This makes the effect show up even on directly lit surfaces" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:427 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:498 msgid "inout vec3 **BACKLIGHT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:427 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:498 msgid "Color of backlighting (works like direct light, but it's received even if the normal is slightly facing away from the light). If used, backlighting will be applied to the object. Can be used as a cheaper approximation of subsurface scattering." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:431 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:502 msgid "out float **AO**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:431 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:502 msgid "Strength of ambient occlusion. For use with pre-baked AO." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:433 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:504 msgid "out float **AO_LIGHT_AFFECT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:433 -msgid "How much ambient occlusion affects direct light (range of ``[0.0, 1.0]``, default ``0.0``)." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:504 +msgid "How much ambient occlusion affects direct light (range ``[0.0, 1.0]``, default ``0.0``)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:435 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:506 msgid "out vec3 **EMISSION**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:435 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:506 msgid "Emission color (can go over ``(1.0, 1.0, 1.0)`` for HDR)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:437 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:508 msgid "out vec4 **FOG**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:437 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:508 msgid "If written to, blends final pixel color with ``FOG.rgb`` based on ``FOG.a``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:439 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:510 msgid "out vec4 **RADIANCE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:439 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:510 msgid "If written to, blends environment map radiance with ``RADIANCE.rgb`` based on ``RADIANCE.a``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:441 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:512 msgid "out vec4 **IRRADIANCE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:441 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:512 msgid "If written to, blends environment map irradiance with ``IRRADIANCE.rgb`` based on ``IRRADIANCE.a``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:447 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:541 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:518 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:612 msgid "Shaders going through the transparent pipeline when ``ALPHA`` is written to may exhibit transparency sorting issues. Read the :ref:`transparency sorting section in the 3D rendering limitations page ` for more information and ways to avoid issues." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:453 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:524 msgid "Light built-ins" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:455 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:526 msgid "Writing light processor functions is completely optional. You can skip the ``light()`` function by using the ``unshaded`` render mode. If no light function is written, Godot will use the material properties written to in the ``fragment()`` function to calculate the lighting for you (subject to the render mode)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:459 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:530 msgid "The ``light()`` function is called for every light in every pixel. It is called within a loop for each light type." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:461 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:532 msgid "Below is an example of a custom ``light()`` function using a Lambertian lighting model:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:469 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:540 msgid "If you want the lights to add together, add the light contribution to ``DIFFUSE_LIGHT`` using ``+=``, rather than overwriting it." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:473 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:544 msgid "The ``light()`` function won't be run if the ``vertex_lighting`` render mode is enabled, or if :ref:`Rendering > Quality > Shading > Force Vertex Shading` is enabled in the Project Settings. (It's enabled by default on mobile platforms.)" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:482 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:553 msgid "Coordinate of pixel center in screen space. ``xy`` specifies position in window, ``z`` specifies fragment depth if ``DEPTH`` is not used. Origin is lower-left." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:497 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:568 msgid "in vec3 **NORMAL**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:497 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:568 msgid "Normal vector, in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:505 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:576 msgid "View vector, in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:507 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:578 msgid "in vec3 **LIGHT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:507 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:578 msgid "Light vector, in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:509 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:580 msgid "in vec3 **LIGHT_COLOR**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:509 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:580 msgid ":ref:`Light color` multiplied by :ref:`light energy` multiplied by ``PI``. The ``PI`` multiplication is present because physically-based lighting models include a division by ``PI``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:514 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:585 msgid "in float **SPECULAR_AMOUNT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:514 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:585 msgid "For :ref:`class_OmniLight3D` and :ref:`class_SpotLight3D`, ``2.0`` multiplied by :ref:`light_specular`. For :ref:`class_DirectionalLight3D`, ``1.0``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:519 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:590 msgid "in bool **LIGHT_IS_DIRECTIONAL**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:519 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:590 msgid "``true`` if this pass is a :ref:`class_DirectionalLight3D`." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:521 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:592 msgid "in float **ATTENUATION**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:521 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:592 msgid "Attenuation based on distance or shadow." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:523 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:594 msgid "in vec3 **ALBEDO**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:523 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:594 msgid "Base albedo." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:525 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:596 msgid "in vec3 **BACKLIGHT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:527 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:598 msgid "in float **METALLIC**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:527 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:598 msgid "Metallic." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:529 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:600 msgid "in float **ROUGHNESS**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:529 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:600 msgid "Roughness." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:531 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:602 msgid "out vec3 **DIFFUSE_LIGHT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:531 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:602 msgid "Diffuse light result." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:533 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:604 msgid "out vec3 **SPECULAR_LIGHT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:533 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:604 msgid "Specular light result." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:535 -msgid "Alpha (range of ``[0.0, 1.0]``). If written to, the material will go to the transparent pipeline." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:606 +msgid "Alpha (range ``[0.0, 1.0]``). If written to, the material will go to the transparent pipeline." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:546 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:617 msgid "Transparent materials also cannot cast shadows or appear in ``hint_screen_texture`` and ``hint_depth_texture`` uniforms. This in turn prevents those materials from appearing in screen-space reflections or refraction. :ref:`SDFGI ` sharp reflections are not visible on transparent materials (only rough reflections are visible on transparent materials)." msgstr "" diff --git a/sphinx/templates/tutorials/shaders/shaders_style_guide.pot b/sphinx/templates/tutorials/shaders/shaders_style_guide.pot index f234f71ed4..ce578b3678 100644 --- a/sphinx/templates/tutorials/shaders/shaders_style_guide.pot +++ b/sphinx/templates/tutorials/shaders/shaders_style_guide.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/using_viewport_as_texture.pot b/sphinx/templates/tutorials/shaders/using_viewport_as_texture.pot index f5be66d69d..4a37e4eebe 100644 --- a/sphinx/templates/tutorials/shaders/using_viewport_as_texture.pot +++ b/sphinx/templates/tutorials/shaders/using_viewport_as_texture.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/visual_shaders.pot b/sphinx/templates/tutorials/shaders/visual_shaders.pot index 8130b60403..6c52df7ee2 100644 --- a/sphinx/templates/tutorials/shaders/visual_shaders.pot +++ b/sphinx/templates/tutorials/shaders/visual_shaders.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/your_first_shader/index.pot b/sphinx/templates/tutorials/shaders/your_first_shader/index.pot index c873257bc4..5256f609bb 100644 --- a/sphinx/templates/tutorials/shaders/your_first_shader/index.pot +++ b/sphinx/templates/tutorials/shaders/your_first_shader/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/your_first_shader/your_first_2d_shader.pot b/sphinx/templates/tutorials/shaders/your_first_shader/your_first_2d_shader.pot index 6fa8470465..997e94b6d7 100644 --- a/sphinx/templates/tutorials/shaders/your_first_shader/your_first_2d_shader.pot +++ b/sphinx/templates/tutorials/shaders/your_first_shader/your_first_2d_shader.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/your_first_shader/your_first_3d_shader.pot b/sphinx/templates/tutorials/shaders/your_first_shader/your_first_3d_shader.pot index 8b201d18a3..86d3de2140 100644 --- a/sphinx/templates/tutorials/shaders/your_first_shader/your_first_3d_shader.pot +++ b/sphinx/templates/tutorials/shaders/your_first_shader/your_first_3d_shader.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/shaders/your_first_shader/your_second_3d_shader.pot b/sphinx/templates/tutorials/shaders/your_first_shader/your_second_3d_shader.pot index c267e81f70..a3feeb567d 100644 --- a/sphinx/templates/tutorials/shaders/your_first_shader/your_second_3d_shader.pot +++ b/sphinx/templates/tutorials/shaders/your_first_shader/your_second_3d_shader.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/troubleshooting.pot b/sphinx/templates/tutorials/troubleshooting.pot index 108d94d77a..d83a4e04c2 100644 --- a/sphinx/templates/tutorials/troubleshooting.pot +++ b/sphinx/templates/tutorials/troubleshooting.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -84,7 +84,7 @@ msgid "The editor or project takes a very long time to start" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:63 -msgid "When using one of the Vulkan-based renderers (Forward+ or Mobile), the first startup is expected to be relatively long. This is because shaders need to be compiled before they can be cached. Shaders also need to be cached again after updating Godot, after updating graphics drivers or after switching graphics cards." +msgid "When using one of the RenderingDevice-based renderers (Forward+ or Mobile), the first startup is expected to be relatively long. This is because shaders need to be compiled before they can be cached. Shaders also need to be cached again after updating Godot, after updating graphics drivers or after switching graphics cards." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:69 diff --git a/sphinx/templates/tutorials/ui/bbcode_in_richtextlabel.pot b/sphinx/templates/tutorials/ui/bbcode_in_richtextlabel.pot index 7d016e54c2..ee27eb8d9e 100644 --- a/sphinx/templates/tutorials/ui/bbcode_in_richtextlabel.pot +++ b/sphinx/templates/tutorials/ui/bbcode_in_richtextlabel.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -1342,7 +1342,7 @@ msgid "Text effects" msgstr "" #: ../../docs/tutorials/ui/bbcode_in_richtextlabel.rst:996 -msgid "BBCode can also be used to create different text effects that can optionally be animated. Five customizable effects are provided out of the box, and you can easily create your own. By default, animated effects will pause :ref:`when the SceneTree is paused `. You can change this behavior by adjusting the RichTextLabel's **Process > Mode** property." +msgid "BBCode can also be used to create different text effects that can optionally be animated. Several customizable effects are provided out of the box, and you can easily create your own. By default, animated effects will pause :ref:`when the SceneTree is paused `. You can change this behavior by adjusting the RichTextLabel's **Process > Mode** property." msgstr "" #: ../../docs/tutorials/ui/bbcode_in_richtextlabel.rst:1002 diff --git a/sphinx/templates/tutorials/ui/control_node_gallery.pot b/sphinx/templates/tutorials/ui/control_node_gallery.pot index 754b90991f..43a26329d7 100644 --- a/sphinx/templates/tutorials/ui/control_node_gallery.pot +++ b/sphinx/templates/tutorials/ui/control_node_gallery.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/ui/custom_gui_controls.pot b/sphinx/templates/tutorials/ui/custom_gui_controls.pot index 0d5766b176..391a108750 100644 --- a/sphinx/templates/tutorials/ui/custom_gui_controls.pot +++ b/sphinx/templates/tutorials/ui/custom_gui_controls.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/ui/gui_containers.pot b/sphinx/templates/tutorials/ui/gui_containers.pot index b438da27a1..d685160837 100644 --- a/sphinx/templates/tutorials/ui/gui_containers.pot +++ b/sphinx/templates/tutorials/ui/gui_containers.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/ui/gui_navigation.pot b/sphinx/templates/tutorials/ui/gui_navigation.pot index 27d2c1f109..83f7752b9a 100644 --- a/sphinx/templates/tutorials/ui/gui_navigation.pot +++ b/sphinx/templates/tutorials/ui/gui_navigation.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/ui/gui_skinning.pot b/sphinx/templates/tutorials/ui/gui_skinning.pot index abeca84af1..dca723d113 100644 --- a/sphinx/templates/tutorials/ui/gui_skinning.pot +++ b/sphinx/templates/tutorials/ui/gui_skinning.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/ui/gui_theme_type_variations.pot b/sphinx/templates/tutorials/ui/gui_theme_type_variations.pot index 966cbf5329..82472f545e 100644 --- a/sphinx/templates/tutorials/ui/gui_theme_type_variations.pot +++ b/sphinx/templates/tutorials/ui/gui_theme_type_variations.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/ui/gui_using_fonts.pot b/sphinx/templates/tutorials/ui/gui_using_fonts.pot index 4bd7182f8c..c7bb3f4b45 100644 --- a/sphinx/templates/tutorials/ui/gui_using_fonts.pot +++ b/sphinx/templates/tutorials/ui/gui_using_fonts.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -76,7 +76,7 @@ msgid "Web Open Font Format 1 (``.woff``)" msgstr "" #: ../../docs/tutorials/ui/gui_using_fonts.rst:57 -msgid "Web Open Font Format 2 (``.woff2``, since Godot 3.5)" +msgid "Web Open Font Format 2 (``.woff2``)" msgstr "" #: ../../docs/tutorials/ui/gui_using_fonts.rst:59 diff --git a/sphinx/templates/tutorials/ui/gui_using_theme_editor.pot b/sphinx/templates/tutorials/ui/gui_using_theme_editor.pot index 48adef08cb..8ef3cb1d2d 100644 --- a/sphinx/templates/tutorials/ui/gui_using_theme_editor.pot +++ b/sphinx/templates/tutorials/ui/gui_using_theme_editor.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/ui/index.pot b/sphinx/templates/tutorials/ui/index.pot index ad514ef305..5380b8df7c 100644 --- a/sphinx/templates/tutorials/ui/index.pot +++ b/sphinx/templates/tutorials/ui/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/ui/size_and_anchors.pot b/sphinx/templates/tutorials/ui/size_and_anchors.pot index ef81469607..d71500d226 100644 --- a/sphinx/templates/tutorials/ui/size_and_anchors.pot +++ b/sphinx/templates/tutorials/ui/size_and_anchors.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/xr/a_better_xr_start_script.pot b/sphinx/templates/tutorials/xr/a_better_xr_start_script.pot index 29a6a87c1b..0edb77e20c 100644 --- a/sphinx/templates/tutorials/xr/a_better_xr_start_script.pot +++ b/sphinx/templates/tutorials/xr/a_better_xr_start_script.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/xr/ar_passthrough.pot b/sphinx/templates/tutorials/xr/ar_passthrough.pot index 4a145f68be..85e4293874 100644 --- a/sphinx/templates/tutorials/xr/ar_passthrough.pot +++ b/sphinx/templates/tutorials/xr/ar_passthrough.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/xr/basic_xr_locomotion.pot b/sphinx/templates/tutorials/xr/basic_xr_locomotion.pot index 28df0a4930..23f7477ecb 100644 --- a/sphinx/templates/tutorials/xr/basic_xr_locomotion.pot +++ b/sphinx/templates/tutorials/xr/basic_xr_locomotion.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/xr/deploying_to_android.pot b/sphinx/templates/tutorials/xr/deploying_to_android.pot index b5250cf46b..f1df9c8751 100644 --- a/sphinx/templates/tutorials/xr/deploying_to_android.pot +++ b/sphinx/templates/tutorials/xr/deploying_to_android.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -47,86 +47,90 @@ msgstr "" msgid "See :ref:`doc_exporting_for_android` for the full details, and return here when you've finished these steps." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:19 +#: ../../docs/tutorials/xr/deploying_to_android.rst:20 msgid "While the Mobile Vulkan renderer has many optimizations targeted at mobile devices, we're still working out the kinks. It is highly advisable to use the compatibility renderer (OpenGL) for the time being when targeting Android based XR devices." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:23 +#: ../../docs/tutorials/xr/deploying_to_android.rst:24 msgid "Gradle Android build" msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:26 +#: ../../docs/tutorials/xr/deploying_to_android.rst:28 msgid "Official support for the Android platform wasn't added to the OpenXR specification initially resulting in various vendors creating custom loaders to make OpenXR available on their headsets. While the long term expectation is that all vendors will adopt the official OpenXR loader, for now these loaders need to be added to your project." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:29 +#: ../../docs/tutorials/xr/deploying_to_android.rst:31 msgid "In order to include the vendor-specific OpenXR loader into your project, you will need to setup a gradle Android build." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:31 +#: ../../docs/tutorials/xr/deploying_to_android.rst:33 msgid "Select **Install Android Build Template...** from the **Project** menu:" msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:35 +#: ../../docs/tutorials/xr/deploying_to_android.rst:37 msgid "This will create a folder called **android** inside of your project that contains all the runtime files needed on Android. You can now customize this installation. Godot won't show this in the editor but you can find it with a file browser." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:37 +#: ../../docs/tutorials/xr/deploying_to_android.rst:39 msgid "You can read more about gradle builds here: :ref:`doc_android_gradle_build`." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:40 +#: ../../docs/tutorials/xr/deploying_to_android.rst:42 msgid "Installing the vendors plugin" msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:42 +#: ../../docs/tutorials/xr/deploying_to_android.rst:44 msgid "The vendors plugin can be downloaded from the asset library, search for \"OpenXR vendors\" and install the one named \"Godot OpenXR Vendors plugin v4\"." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:47 +#: ../../docs/tutorials/xr/deploying_to_android.rst:49 msgid "You will find the installed files inside the **addons** folder. Alternatively you can manually install the vendors plugin by downloading it `from the release page here `__. You will need to copy the `assets/addons/godotopenxrvendors` folder from the zip file into your projects `addons` folder." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:52 +#: ../../docs/tutorials/xr/deploying_to_android.rst:54 msgid "You can find the main repository of the vendors plugin `here `__." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:55 -msgid "Creating the export presets" -msgstr "" - -#: ../../docs/tutorials/xr/deploying_to_android.rst:56 -msgid "You will need to setup a separate export preset for each device, as each device will need its own loader included." -msgstr "" - #: ../../docs/tutorials/xr/deploying_to_android.rst:58 -msgid "Open **Project** and select **Export..**. Click on **Add..** and select **Android**. Next change the name of the export preset for the device you're setting this up for, say **Meta Quest**. And enable **Use Gradle Build**. If you want to use one-click deploy (described below), ensure that **Runnable** is enabled." +msgid "From Godot 4.6 onwards, the vendor plugin is now an optional but recommended plugin. Godot can export directly to most Android-compatible devices. This can be useful for demonstration and tutorial projects where a single APK can be deployed to multiple devices. The vendor plugin unlocks vendor specific implementations and settings, and may be required to release on app stores." msgstr "" #: ../../docs/tutorials/xr/deploying_to_android.rst:64 -msgid "If the vendors plugins were installed correctly you should find entries for the different headsets under **XR Features**. Change the **XR Mode** to **OpenXR**, then select the entry for your headset if you see one. If you don't see one enable the Khronos plugin." +msgid "Creating the export presets" msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:71 +#: ../../docs/tutorials/xr/deploying_to_android.rst:65 +msgid "You will need to setup a separate export preset for each device, as each device will need its own loader included." +msgstr "" + +#: ../../docs/tutorials/xr/deploying_to_android.rst:67 +msgid "Open **Project** and select **Export..**. Click on **Add..** and select **Android**. Next change the name of the export preset for the device you're setting this up for, say **Meta Quest**. And enable **Use Gradle Build**. Next change the **XR Mode** to **OpenXR**. If you want to use one-click deploy (described below), ensure that **Runnable** is enabled." +msgstr "" + +#: ../../docs/tutorials/xr/deploying_to_android.rst:74 +msgid "If you've installed the vendor plugin you will also find entries for the different headsets under **XR Features**. Select the entry for your headset, if you see one. Otherwise, enable the Khronos plugin." +msgstr "" + +#: ../../docs/tutorials/xr/deploying_to_android.rst:80 msgid "Scroll to the bottom of the list and you'll find additional XR feature sections, currently only **Meta XR Features**, **Pico XR Features**, **Magicleap XR Features** and **Khronos XR Features** for HTC are available. You will need to select the appropriate settings if you wish to use these features." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:77 +#: ../../docs/tutorials/xr/deploying_to_android.rst:86 msgid "Running on your device from the Godot editor" msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:78 +#: ../../docs/tutorials/xr/deploying_to_android.rst:87 msgid "If you've setup your export settings as described above, and your headset is connected to your computer and correctly recognized, you can launch it directly from the Godot editor using :ref:`doc_one-click_deploy`:" msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:82 +#: ../../docs/tutorials/xr/deploying_to_android.rst:91 msgid "For some devices on some platforms, you may need to perform some extra steps in order for your device to be recognized correctly, so be sure to check the developer documentation from your headset vendor." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:84 +#: ../../docs/tutorials/xr/deploying_to_android.rst:93 msgid "For example, with the Meta Quest 2, you need to enable developer mode on the headset, and if you're on Windows, you'll need to install special ADB drivers. See the `official Meta Quest developer documentation `_ for more details." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:86 +#: ../../docs/tutorials/xr/deploying_to_android.rst:95 msgid "If you're having any issues with one-click deploy, check the :ref:`Troubleshooting section `." msgstr "" diff --git a/sphinx/templates/tutorials/xr/index.pot b/sphinx/templates/tutorials/xr/index.pot index e3d6479ed8..0f2261aacf 100644 --- a/sphinx/templates/tutorials/xr/index.pot +++ b/sphinx/templates/tutorials/xr/index.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -31,6 +31,6 @@ msgstr "" msgid "Advanced topics" msgstr "" -#: ../../docs/tutorials/xr/index.rst:39 +#: ../../docs/tutorials/xr/index.rst:40 msgid "Godot XR Tools" msgstr "" diff --git a/sphinx/templates/tutorials/xr/introducing_xr_tools.pot b/sphinx/templates/tutorials/xr/introducing_xr_tools.pot index 5fb5f3ef41..c0fbdc8af6 100644 --- a/sphinx/templates/tutorials/xr/introducing_xr_tools.pot +++ b/sphinx/templates/tutorials/xr/introducing_xr_tools.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/xr/openxr_body_tracking.pot b/sphinx/templates/tutorials/xr/openxr_body_tracking.pot index 95bdad5e0c..18e5a0dc03 100644 --- a/sphinx/templates/tutorials/xr/openxr_body_tracking.pot +++ b/sphinx/templates/tutorials/xr/openxr_body_tracking.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/xr/openxr_composition_layers.pot b/sphinx/templates/tutorials/xr/openxr_composition_layers.pot index 76b4e0a82e..32b33633ba 100644 --- a/sphinx/templates/tutorials/xr/openxr_composition_layers.pot +++ b/sphinx/templates/tutorials/xr/openxr_composition_layers.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/xr/openxr_hand_tracking.pot b/sphinx/templates/tutorials/xr/openxr_hand_tracking.pot index 8792e3794e..18105ef33b 100644 --- a/sphinx/templates/tutorials/xr/openxr_hand_tracking.pot +++ b/sphinx/templates/tutorials/xr/openxr_hand_tracking.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/xr/openxr_render_models.pot b/sphinx/templates/tutorials/xr/openxr_render_models.pot index 811427824a..658fa6f8ee 100644 --- a/sphinx/templates/tutorials/xr/openxr_render_models.pot +++ b/sphinx/templates/tutorials/xr/openxr_render_models.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/xr/openxr_settings.pot b/sphinx/templates/tutorials/xr/openxr_settings.pot index b85dfc95de..57a48825c2 100644 --- a/sphinx/templates/tutorials/xr/openxr_settings.pot +++ b/sphinx/templates/tutorials/xr/openxr_settings.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/xr/openxr_spatial_entities.pot b/sphinx/templates/tutorials/xr/openxr_spatial_entities.pot new file mode 100644 index 0000000000..3c5a45b59a --- /dev/null +++ b/sphinx/templates/tutorials/xr/openxr_spatial_entities.pot @@ -0,0 +1,803 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine latest\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:4 +msgid "OpenXR spatial entities" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:6 +msgid "For any sort of augmented reality application you need to access real world information, and be able to track real world locations. OpenXR's spatial entities API was introduced for this exact purpose." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:9 +msgid "It has a very modular design. The core of the API defines how real world entities are structured, how they are found, and how information about them is stored and accessed." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:12 +msgid "Various extensions are added on top, which implement specific systems such as marker tracking, plane tracking, and anchors. These are referred to as spatial capabilities." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:15 +msgid "Each entity that can be handled by the system is broken up into smaller components, which makes it easy to extend the system and add new capabilities." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:18 +msgid "Vendors have the ability to implement and expose additional capabilities and component types that can be used with the core API. For Godot these can be implemented in extensions. These implementations however fall outside of the scope of this manual." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:22 +msgid "Finally it is important to note that the spatial entity system makes use of asynchronous functions. This means that you can start a process, and then get informed of it finishing later on." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:26 +msgid "Setup" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:28 +msgid "In order to use spatial entities you need to enable the related project settings. You can find these in the OpenXR section:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:33 +msgid "Spatial entity settings" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:36 +msgid "Setting" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:37 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:968 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1119 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1284 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1617 +msgid "Description" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:38 +msgid "Enabled" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:39 +msgid "Enables the core of the spatial entities system. This must be enabled for any of the spatial entities systems to work." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:41 +msgid "Enable spatial anchors" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:42 +msgid "Enables the spatial anchors capability that allow creating and tracking spatial anchors." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:43 +msgid "Enable persistent anchors" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:44 +msgid "Enables the ability to make spatial anchors persistent. This means that their location is stored and can be retrieved in subsequent sessions." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:46 +msgid "Enable built-in anchor detection" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:47 +msgid "Enables our built-in anchor detection logic, this will automatically retrieve persistent anchors and adjust the positioning of anchors when tracking is updated." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:49 +msgid "Enable plane tracking" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:50 +msgid "Enables the plane tracking capability that allows detection of surfaces such as floors, walls, ceilings, and tables." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:52 +msgid "Enable built-in plane detection" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:53 +msgid "Enables our built-in plane detection logic, this will automatically react to new plane data becoming available." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:55 +msgid "Enable marker tracking" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:56 +msgid "Enables our marker tracking capability that allows detection of markers such as QR codes, Aruco markers, and April tags." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:58 +msgid "Enable built-in marker tracking" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:59 +msgid "Enables our built-in marker detection logic, this will automatically react to new markers being found or markers being moved around the player's space." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:64 +msgid "Note that various XR devices also require permission flags to be set. These will need to be enabled in the export preset settings." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:67 +msgid "Enabling the different capabilities activates the related OpenXR APIs, but additional logic is needed to interact with this data. For each core system we have built-in logic that can be enabled that will do this for you." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:71 +msgid "We'll discuss the spatial entities system under the assumption that the built-in logic is enabled first. We will then take a look at the underlying APIs and how you can implement this yourself, however it should be noted that this is often overkill and that the underlying APIs are mostly exposed to allow GDExtension plugins to implement additional capabilities." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:77 +msgid "Creating our spatial manager" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:79 +msgid "When spatial entities are detected or created an :ref:`OpenXRSpatialEntityTracker` object is instantiated and registered with the :ref:`XRServer`." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:83 +msgid "Each type of spatial entity will implement its own subclass and we can thus react differently to each type of entity." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:86 +msgid "Generally speaking we will instance different subscenes for each type of entity. As the tracker objects can be used with :ref:`XRAnchor3D` nodes, these subscenes should have such a node as their root node." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:90 +msgid "All entity trackers will expose their location through the ``default`` pose." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:92 +msgid "We can automate creating these subscenes and adding them to our scene tree by creating a manager object. As all locations are local to the :ref:`XROrigin3D` node, we should create our manager as a child node of our origin node." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:96 +msgid "Below is the basis of the script that implements our manager logic:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:237 +msgid "Spatial anchors" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:239 +msgid "Spatial anchors allow us to map real world locations in our virtual world in such a way that the XR runtime will keep track of these locations and adjust them as needed. If supported, anchors can be made persistent which means the anchors will be recreated in the correct location when your application starts again." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:244 +msgid "You can think of use cases such as: - placing virtual windows around your space that are recreated when your application restarts - placing virtual objects on your table or on your walls and have them recreated" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:248 +msgid "Spatial anchors are tracked using :ref:`OpenXRAnchorTracker` objects registered with the XRServer." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:251 +msgid "When needed, the location of the spatial anchor will be updated automatically; the pose on the related tracker will be updated and thus the :ref:`XRAnchor3D` node will reposition." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:255 +msgid "When a spatial anchor has been made persistent, a Universally Unique Identifier (or UUID) is assigned to the anchor. You will need to store this with whatever information you need to reconstruct the scene. In our example code below we'll simply call ``set_scene_path`` and ``get_scene_path``, but you will need to supply your own implementations for these functions." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:261 +msgid "In order to create a persistent anchor you need to follow a specific flow: - Create the spatial anchor - Wait until the tracking status changes to ``ENTITY_TRACKING_STATE_TRACKING`` - Make the anchor persistent - Obtain the UUID and save it" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:267 +msgid "When an existing persistent anchor is found a new tracker is added that has the UUID already set. It is this difference in workflow that allows us to correctly react to new and existing persistent anchors." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:273 +msgid "If you unpersist an anchor, the UUID is destroyed but the anchor is not removed automatically. You will need to react to the completion of unpersisting an anchor and then clean it up. Also you will get an error if you try to destroy an anchor that is still persistent." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:278 +msgid "To complete our anchor system we start by creating a scene that we'll set as the scene to instantiate for anchors on our spatial manager node." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:281 +msgid "This scene should have an :ref:`XRAnchor3D` node as the root but nothing else. We will add a script to it that will load a subscene that contains the actual visual aspect of our anchor so we can create different anchors in our scene. We'll assume the intention is to make these anchors persistent and save the path to this subscene as metadata for our UUID." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:373 +msgid "With our anchor scene in place we can add a couple of functions to our spatial manager script to create or remove anchors:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:449 +msgid "There seems to be a bit of magic going on in the code above. Whenever a spatial anchor is created or removed on our anchor capability, the related tracker object is created or destroyed. This results in the spatial manager adding or removing the child scene for this anchor. Hence we can rely on this here." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:456 +msgid "Plane tracking" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:458 +msgid "Plane tracking allows us to detect surfaces such as walls, floors, ceilings, and tables in the player's vicinity. This data could come from a room capture performed by the user at any time in the past, or detected live by optical sensors. The plane tracking extension doesn't make a distinction here." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:465 +msgid "Some XR runtimes do require vendor extensions to enable and/or configure this process but the data will be exposed through this extension." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:468 +msgid "The code we wrote up above for the spatial manager will already detect our new planes. We do need to set up a new scene and assign that scene to the spatial manager." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:471 +msgid "The root node for this scene must be an :ref:`XRAnchor3D` node. We'll add a :ref:`StaticBody3D` node as a child and add a :ref:`CollisionShape3D` and :ref:`MeshInstance3D` node as children of the static body." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:478 +msgid "The static body and collision shape will allow us to make the plane interactable." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:480 +msgid "The mesh instance node allows us to apply a \"hole punch\" material to the plane, when combined with passthrough this turns our plane into a visual occluder. Alternatively we can assign a material that will visualize the plane for debugging." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:484 +msgid "We configure this material as the ``material_override`` material on our MeshInstance3D. For our \"hole punch\" material, create a :ref:`ShaderMaterial` and use the following code as the shader code:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:497 +msgid "We also need to add a script to our scene to ensure our collision and mesh are applied." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:525 +msgid "If supported by the XR runtime there is additional metadata you can query on the plane tracker object. Of specific note is the ``plane_label`` property that, if available, identifies the type of surface. Please consult the :ref:`OpenXRPlaneTracker` class documentation for further information." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:532 +msgid "Marker tracking" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:534 +msgid "Marker tracking detects specific markers in the real world. These are usually printed images such as QR codes." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:537 +msgid "The API exposes support for 4 different codes, QR codes, Micro QR codes, Aruco codes, and April tags, however XR runtimes are not required to support them all." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:540 +msgid "When markers are detected, :ref:`OpenXRMarkerTracker` objects are instantiated and registered with the XRServer." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:543 +msgid "Our existing spatial manager code already detects these, all we need to do is create a scene with an :ref:`XRAnchor3D` node at the root, save this, and assign it to the spatial manager as the scene to instantiate for markers." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:547 +msgid "The marker tracker should be fully configured when assigned, so all that is needed is a ``_ready`` function that reacts to the marker data. Below is a template for the required code:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:584 +msgid "As we can see, QR Codes provide a data block that is either a string or a byte array. Aruco and April tags provide an ID that is read from the code." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:587 +msgid "It's up to your use case how best to link the marker data to the scene that needs to be loaded. An example would be to encode the name of the asset you wish to display in a QR code." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:591 +msgid "Backend access" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:593 +msgid "For most purposes the core system, along with any vendor extensions, should be what most users would use as provided." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:596 +msgid "For those who are implementing vendor extensions, or those for whom the built-in logic doesn't suffice, backend access is provided through a set of singleton objects." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:599 +msgid "These objects can also be used to query what capabilities are supported by the headset in use. We've already added code that checks for these in our spatial manager and spatial anchor code in the sections above." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:605 +msgid "The spatial entities system will encapsulate many OpenXR entities in resources that are returned as RIDs." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:609 +msgid "Spatial entity core" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:611 +msgid "The core spatial entity functionality is exposed through the :ref:`OpenXRSpatialEntityExtension` singleton." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:614 +msgid "Specific logic is exposed through capabilities that introduce specialised component types, and give access to specific types of entities, however they all use the same mechanisms for accessing the entity data managed by the spatial entity system." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:618 +msgid "We'll start by having a look at the individual components that make up the core system." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:621 +msgid "Spatial contexts" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:623 +msgid "A spatial context is the main object through which we query the spatial entities system. Spatial contexts allow us to configure how we interact with one or more capabilities." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:626 +msgid "It's recommended to create a spatial context for each capability that you wish to interact with, in fact, this is what Godot does for its built-in logic." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:629 +msgid "We start by setting the capability configuration objects for the capabilities we wish to access. Each capability will enable the components we support for that capability. Settings can determine which components will be enabled. We'll look at these configuration objects in more detail as we look at each supported capability." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:635 +msgid "Creating a spatial context is an asynchronous action. This means we ask the XR runtime to create a spatial context, and at a point in the future the XR runtime will provide us with the result." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:639 +msgid "The following script is the start of our example and can be added as a node to your scene. It shows the creation of a spatial context for plane tracking, and sets up our entity discovery." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:708 +msgid "Discovery snapshots" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:710 +msgid "Once our spatial context has been created the XR runtime will start managing spatial entities according to the configuration of the specified capabilities." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:713 +msgid "In order to find new entities, or to get information about our current entities, we can create a discovery snapshot. This will tell the XR runtime to gather specific data related to all the spatial entities currently managed by the spatial context." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:717 +msgid "This function is asynchronous as it may take some time to gather this data and offer its results. Generally speaking you will want to perform a discovery snapshot when new entities are found. OpenXR emits an event when there are new entities to be processed, this results in the ``spatial_discovery_recommended`` signal being emitted by our :ref:`OpenXRSpatialEntityExtension` singleton." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:723 +msgid "Note in the example code shown above, we're already connecting to this signal and calling the ``_on_perform_discovery`` method on our node. Let's implement this:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:764 +msgid "Note that when calling ``discover_spatial_entities`` we specify a list of components. The discovery query will find any entity that is managed by the spatial context and has at least one of the specified components." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:769 +msgid "Update snapshots" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:771 +msgid "Performing an update snapshot allows us to get updated information about entities we already found previously with our discovery snapshot. This function is synchronous, and is mainly meant to obtain status and positioning data and can be run every frame." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:776 +msgid "Generally speaking you would only perform update snapshots when it's likely entities change or have a lifetime process. A good example of this are persistent anchors and markers. Consult the documentation about a capability to determine if this is needed." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:780 +msgid "It is not needed for plane tracking however to complete our example, here is an example of what an update snapshot would look like for plane tracking if we needed one:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:809 +msgid "Note that in our example here we're using the same ``_process_snapshot`` function to process the snapshot. This makes sense in most situations. However if the components you've specified when creating the snapshot are different between your discovery snapshot and your update snapshot, you have to take the different components into account." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:815 +msgid "Querying snapshots" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:817 +msgid "Once we have a snapshot we can run queries over that snapshot to obtain the data held within. The snapshot is guaranteed to remain unchanged until you free it." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:820 +msgid "For each component we've added to our snapshot we have an accompanying data object. This data object has a double function, adding it to your query ensures we query that component type, and it is the object into which the queried data is loaded." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:824 +msgid "There is one special data object that must always be added to our request list as the very first entry and that is :ref:`OpenXRSpatialQueryResultData`. This object will hold an entry for every returned entity with its unique ID and the current state of the entity." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:829 +msgid "Completing our discovery logic we add the following:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:896 +msgid "In the above example we're relying on ``ENTITY_TRACKING_STATE_STOPPED`` to clean up spatial entities that are no longer being tracked. This is only available with update snapshots." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:899 +msgid "For capabilities that only rely on discovery snapshots you may wish to do a cleanup based on entities that are no longer part of the snapshot instead of relying on the state change." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:903 +msgid "Spatial entities" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:905 +msgid "With the above information we now know how to query our spatial entities and get information about them, but there is a little more we need to look at when it comes to the entities themselves." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:908 +msgid "In theory we're getting all our data from our snapshots, however OpenXR has an extra API where we create a spatial entity object from our entity ID. While this object exists the XR runtime knows that we are using this entity and that the entity is not cleaned up early. This is a prerequisite for performing an update query on this entity." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:914 +msgid "In our example code we do so by calling ``OpenXRSpatialEntityExtension.make_spatial_entity``." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:916 +msgid "Some spatial entity APIs will automatically create the object for us. In this case we need to call ``OpenXRSpatialEntityExtension.add_spatial_entity`` to register the created object with our implementation." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:920 +msgid "Both functions return an RID that we can use in further functions that require our entity object." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:922 +msgid "When we're done we can call ``OpenXRSpatialEntityExtension.free_spatial_entity``." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:924 +msgid "Note that we didn't do so in our example code. This is automatically handled when our :ref:`OpenXRSpatialEntityTracker` instance is destroyed." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:928 +msgid "Spatial anchor capability" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:930 +msgid "Spatial anchors are managed by our :ref:`OpenXRSpatialAnchorCapability` singleton object. After the OpenXR session has been created you can call ``OpenXRSpatialAnchorCapability.is_spatial_anchor_supported`` to check if the spatial anchor feature is supported on your hardware." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:935 +msgid "The spatial anchor capability breaks the mold a little from what we've shown above." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:937 +msgid "The spatial anchor system allows us to identify, track, persist, and share a physical location. What makes this different is that we're creating and destroying the anchor and are thus managing its lifecycle." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:941 +msgid "We thus only use the discovery system to discover anchors created and persisted in previous sessions, or anchors shared with us." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:946 +msgid "Sharing of anchors is currently not supported in the spatial entities specification." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:948 +msgid "As we showed in our example before we always start with creating a spatial context but now using the :ref:`OpenXRSpatialCapabilityConfigurationAnchor` configuration object. We'll show an example of this code after we discuss persistence scopes. First we'll look at managing local anchors." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:954 +msgid "There is no difference in creating spatial anchors from what we've discussed around the built-in logic. The only important thing is to pass your own spatial context as a parameter to ``OpenXRSpatialAnchorCapability.create_new_anchor``." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:958 +msgid "Making an anchor persistent requires you to wait until the anchor is tracking, this means that you must perform update queries for any anchor you create so you can process state changes." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:961 +msgid "In order to enable making anchors persistent you also have to set up a persistence scope. In the core of OpenXR two types of persistence scopes are supported:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:964 +msgid "Persistence scopes" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:967 +msgid "Enum" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:969 +msgid "PERSISTENCE_SCOPE_SYSTEM_MANAGED" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:970 +msgid "Provides the application with read-only access (i.e. applications cannot modify this store) to spatial entities persisted and managed by the system. The application can use the UUID in the persistence component for this store to correlate entities across spatial contexts and device reboots." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:974 +msgid "PERSISTENCE_SCOPE_LOCAL_ANCHORS" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:975 +msgid "Persistence operations and data access is limited to spatial anchors, on the same device, for the same user and app (using `persist_anchor` and `unpersist_anchor` functions)" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:979 +msgid "We'll start with a new script that handles our spatial anchors. It will be similar to the script presented earlier but with a few differences." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:982 +msgid "The first being the creation of our persistence scope." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1064 +msgid "With our persistence scope created, we can now create our spatial context." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1105 +msgid "Creating our discovery snapshot for our anchors is nearly the same as we did before, however it only makes sense to create our snapshot for persistent anchors. We already know the anchors we created during our session, we just want access to those coming from the XR runtime." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1109 +msgid "We also want to perform regular update queries, here we are only interested in the state so we do want to process our snapshot slightly differently." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1112 +msgid "The anchor system gives us access to two components:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1114 +msgid "Anchor components" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1117 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1282 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1615 +msgid "Component" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1118 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1283 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1616 +msgid "Data class" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1120 +msgid "COMPONENT_TYPE_ANCHOR" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1121 +msgid ":ref:`OpenXRSpatialComponentAnchorList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1122 +msgid "Provides us with the pose (location + orientation) of each anchor" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1123 +msgid "COMPONENT_TYPE_PERSISTENCE" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1124 +msgid ":ref:`OpenXRSpatialComponentPersistenceList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1125 +msgid "Provides us with the persistence state and UUID of each anchor" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1192 +msgid "Finally we can process our snapshot. Note that we are using :ref:`OpenXRAnchorTracker` as our tracker class as this already has all the support for anchors built in." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1264 +msgid "Plane tracking capability" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1266 +msgid "Plane tracking is handled by the :ref:`OpenXRSpatialPlaneTrackingCapability` singleton class." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1270 +msgid "After the OpenXR session has been created you can call ``OpenXRSpatialPlaneTrackingCapability.is_supported`` to check if the plane tracking feature is supported on your hardware." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1273 +msgid "While we've provided most of the code for plane tracking up above, we'll present the full implementation below as it has a few small tweaks. There is no need to update snapshots here, we just do our discovery snapshot and implement our process function." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1277 +msgid "Plane tracking gives access to two components that are guaranteed to be supported, and three optional components." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1279 +msgid "Plane tracking components" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1285 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1621 +msgid "COMPONENT_TYPE_BOUNDED_2D" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1286 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1622 +msgid ":ref:`OpenXRSpatialComponentBounded2DList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1287 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1623 +msgid "Provides us with the center pose and bounding rectangle for each plane." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1288 +msgid "COMPONENT_TYPE_PLANE_ALIGNMENT" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1289 +msgid ":ref:`OpenXRSpatialComponentPlaneAlignmentList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1290 +msgid "Provides us with the alignment of each plane" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1291 +msgid "COMPONENT_TYPE_MESH_2D" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1292 +msgid ":ref:`OpenXRSpatialComponentMesh2DList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1293 +msgid "Provides us with a 2D mesh that shapes each plane" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1294 +msgid "COMPONENT_TYPE_POLYGON_2D" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1295 +msgid ":ref:`OpenXRSpatialComponentPolygon2DList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1296 +msgid "Provides us with a 2D polygon that shapes each plane" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1297 +msgid "COMPONENT_TYPE_PLANE_SEMANTIC_LABEL" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1298 +msgid ":ref:`OpenXRSpatialComponentPlaneSemanticLabelList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1299 +msgid "Provides us with a type identification of each plane" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1301 +msgid "Our plane tracking configuration object already enables all supported components, but we'll need to interrogate it so we'll store our instance in a member variable. We can use our :ref:`OpenXRPlaneTracker` tracker object to store our component data." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1499 +msgid "Marker tracking capability" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1501 +msgid "Marker tracking is handled by the :ref:`OpenXRSpatialMarkerTrackingCapability` singleton class." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1505 +msgid "Marker tracking works similarly to plane tracking, however we're now tracking specific entities in the real world based on some code printed on an object like a piece of paper." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1508 +msgid "There are various different marker tracking options. OpenXR supports 4 out of the box, the following table provides more information and the function name with which to check if your headset supports a given option:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1512 +msgid "Marker tracking options" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1515 +msgid "Option" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1516 +msgid "Check for support" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1517 +msgid "Configuration object" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1518 +msgid "April tag" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1519 +msgid "``april_tag_is_supported``" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1520 +msgid ":ref:`OpenXRSpatialCapabilityConfigurationAprilTag`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1521 +msgid "Aruco" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1522 +msgid "``aruco_is_supported``" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1523 +msgid ":ref:`OpenXRSpatialCapabilityConfigurationAruco`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1524 +msgid "QR code" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1525 +msgid "``qrcode_is_supported``" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1526 +msgid ":ref:`OpenXRSpatialCapabilityConfigurationQrCode`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1527 +msgid "Micro QR code" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1528 +msgid "``micro_qrcode_is_supported``" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1529 +msgid ":ref:`OpenXRSpatialCapabilityConfigurationMicroQrCode`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1531 +msgid "Each option has its own configuration object that you can use when creating a spatial entity." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1533 +msgid "QR codes allow you to encode a string which is decoded by the XR runtime and accessible when a marker is found. With April tags and Aruco markers, binary data is encoded which you again can access when a marker is found, however you need to configure the detection with the correct decoding format." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1537 +msgid "As an example we'll create a spatial context that will find QR codes and Aruco markers." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1610 +msgid "Every marker regardless of typer will consist of two components:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1612 +msgid "Marker tracking components" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1618 +msgid "COMPONENT_TYPE_MARKER" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1619 +msgid ":ref:`OpenXRSpatialComponentMarkerList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1620 +msgid "Provides us with the type, ID (Aruco and April Tag), and/or data (QR Code) for each marker." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1625 +msgid "We add our discovery implementation:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1743 +msgid "And we add our update functionality:" +msgstr "" diff --git a/sphinx/templates/tutorials/xr/setting_up_xr.pot b/sphinx/templates/tutorials/xr/setting_up_xr.pot index dee5daa211..fc4b817952 100644 --- a/sphinx/templates/tutorials/xr/setting_up_xr.pot +++ b/sphinx/templates/tutorials/xr/setting_up_xr.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -76,7 +76,7 @@ msgid "OpenXR" msgstr "" #: ../../docs/tutorials/xr/setting_up_xr.rst:48 -msgid "OpenXR is a new industry standard that allows different XR platforms to present themselves through a standardised API to XR applications. This standard is an open standard maintained by the Khronos Group and thus aligns very well with Godot's interests." +msgid "OpenXR is a new industry standard that allows different XR platforms to present themselves through a standardized API to XR applications. This standard is an open standard maintained by the Khronos Group and thus aligns very well with Godot's interests." msgstr "" #: ../../docs/tutorials/xr/setting_up_xr.rst:50 diff --git a/sphinx/templates/tutorials/xr/xr_action_map.pot b/sphinx/templates/tutorials/xr/xr_action_map.pot index 59be735581..edeadcfb2e 100644 --- a/sphinx/templates/tutorials/xr/xr_action_map.pot +++ b/sphinx/templates/tutorials/xr/xr_action_map.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -185,7 +185,7 @@ msgid "my_first_action_set" msgstr "" #: ../../docs/tutorials/xr/xr_action_map.rst:142 -msgid "This is the internal name of the action set. OpenXR doesn't specify specific restrictions on this name other then size, however some XR runtimes will not like spaces or special characters." +msgid "This is the internal name of the action set. OpenXR doesn't specify specific restrictions on this name other than size, however some XR runtimes will not like spaces or special characters." msgstr "" #: ../../docs/tutorials/xr/xr_action_map.rst:145 diff --git a/sphinx/templates/tutorials/xr/xr_full_screen_effects.pot b/sphinx/templates/tutorials/xr/xr_full_screen_effects.pot index c119b210c3..d6b49bb484 100644 --- a/sphinx/templates/tutorials/xr/xr_full_screen_effects.pot +++ b/sphinx/templates/tutorials/xr/xr_full_screen_effects.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/sphinx/templates/tutorials/xr/xr_next_steps.pot b/sphinx/templates/tutorials/xr/xr_next_steps.pot index 242658f27e..5ef20a4fb8 100644 --- a/sphinx/templates/tutorials/xr/xr_next_steps.pot +++ b/sphinx/templates/tutorials/xr/xr_next_steps.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -36,29 +36,41 @@ msgid "You can find 3rd party tutorials on our :ref:`Tutorials and resources ` that you can look at, a toolkit developed by core contributors of Godot." +msgid "The vendor plugin isn't just for :ref:`deploying to Android `. In the vendor plugin, we implement many OpenXR vendor extensions that unlock unique features on certain devices, or features that are new enough that a standardized implementation is not available yet." msgstr "" #: ../../docs/tutorials/xr/xr_next_steps.rst:19 -msgid "There are more toolkits available for Godot:" -msgstr "" - -#: ../../docs/tutorials/xr/xr_next_steps.rst:21 -msgid "`Godot XR handtracking toolkit `_ (GDScript)" -msgstr "" - -#: ../../docs/tutorials/xr/xr_next_steps.rst:22 -msgid "`Godot XR Kit `_ (GDScript)" -msgstr "" - -#: ../../docs/tutorials/xr/xr_next_steps.rst:23 -msgid "`Godot XR Tools `_ (GDScript)" +msgid "Together with the OpenXR working group we maintain a `client support matrix `_ that lists all the OpenXR extensions Godot supports and whether they require the vendor plugin." msgstr "" #: ../../docs/tutorials/xr/xr_next_steps.rst:24 +msgid "XR Toolkits" +msgstr "" + +#: ../../docs/tutorials/xr/xr_next_steps.rst:26 +msgid "There are various XR toolkits available that implement more complex XR logic ready for you to use. We have a :Ref:`small introduction to Godot XR Tools ` that you can look at, a toolkit developed by core contributors of Godot." +msgstr "" + +#: ../../docs/tutorials/xr/xr_next_steps.rst:30 +msgid "There are more toolkits available for Godot:" +msgstr "" + +#: ../../docs/tutorials/xr/xr_next_steps.rst:32 +msgid "`Godot XR handtracking toolkit `_ (GDScript)" +msgstr "" + +#: ../../docs/tutorials/xr/xr_next_steps.rst:33 +msgid "`Godot XR Kit `_ (GDScript)" +msgstr "" + +#: ../../docs/tutorials/xr/xr_next_steps.rst:34 +msgid "`Godot XR Tools `_ (GDScript)" +msgstr "" + +#: ../../docs/tutorials/xr/xr_next_steps.rst:35 msgid "`NXR `_ (C#)" msgstr "" diff --git a/sphinx/templates/tutorials/xr/xr_room_scale.pot b/sphinx/templates/tutorials/xr/xr_room_scale.pot index ff237e3798..3e393f7a5a 100644 --- a/sphinx/templates/tutorials/xr/xr_room_scale.pot +++ b/sphinx/templates/tutorials/xr/xr_room_scale.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" diff --git a/templates_list.txt b/templates_list.txt index ada7b4533c..b31ac18cc4 100644 --- a/templates_list.txt +++ b/templates_list.txt @@ -271,6 +271,7 @@ tutorials/platform/android/android_library.pot tutorials/platform/android/android_plugin.pot tutorials/platform/android/android_in_app_purchases.pot tutorials/platform/android/javaclasswrapper_and_androidruntimeplugin.pot +tutorials/platform/android/resolving_crashes_on_android.pot tutorials/platform/ios/index.pot tutorials/platform/ios/ios_plugin.pot tutorials/platform/ios/plugins_for_ios.pot @@ -341,6 +342,10 @@ tutorials/scripting/c_sharp/c_sharp_global_classes.pot tutorials/scripting/cpp/index.pot tutorials/scripting/cpp/about_godot_cpp.pot tutorials/scripting/cpp/gdextension_cpp_example.pot +tutorials/scripting/cpp/build_system/index.pot +tutorials/scripting/cpp/build_system/cmake.pot +tutorials/scripting/cpp/build_system/scons.pot +tutorials/scripting/cpp/core_types.pot tutorials/scripting/cpp/gdextension_docs_system.pot tutorials/scripting/other_languages.pot tutorials/scripting/gdextension/index.pot @@ -353,6 +358,7 @@ tutorials/scripting/debug/overview_of_debugging_tools.pot tutorials/scripting/debug/output_panel.pot tutorials/scripting/debug/debugger_panel.pot tutorials/scripting/debug/the_profiler.pot +tutorials/scripting/debug/objectdb_profiler.pot tutorials/scripting/debug/custom_performance_monitors.pot tutorials/scripting/idle_and_physics_processing.pot tutorials/scripting/groups.pot @@ -419,6 +425,7 @@ tutorials/xr/openxr_composition_layers.pot tutorials/xr/openxr_hand_tracking.pot tutorials/xr/openxr_body_tracking.pot tutorials/xr/openxr_render_models.pot +tutorials/xr/openxr_spatial_entities.pot tutorials/xr/introducing_xr_tools.pot tutorials/xr/basic_xr_locomotion.pot engine_details/architecture/index.pot @@ -465,6 +472,8 @@ engine_details/development/compiling/compiling_with_script_encryption_key.pot engine_details/development/compiling/optimizing_for_size.pot engine_details/development/debugging/index.pot engine_details/development/debugging/using_cpp_profilers.pot +engine_details/development/debugging/profiling/sampling_profilers.pot +engine_details/development/debugging/profiling/tracing_profilers.pot engine_details/development/debugging/using_sanitizers.pot engine_details/development/debugging/macos_debug.pot engine_details/development/debugging/vulkan/index.pot diff --git a/weblate/docs.pot b/weblate/docs.pot index 3efc9a1a60..0cea5e41cb 100644 --- a/weblate/docs.pot +++ b/weblate/docs.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 4.5\n" +"Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot-docs-l10n\n" -"POT-Creation-Date: 2025-12-19 13:01+0100\n" +"POT-Creation-Date: 2025-12-19 15:00+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -49,8 +49,8 @@ msgstr "" msgid "Downloads" msgstr "" -#: ../../docs/index.rst:65 ../../docs/about/docs_changelog.rst:68 -#: ../../docs/about/docs_changelog.rst:264 +#: ../../docs/index.rst:65 ../../docs/about/docs_changelog.rst:99 +#: ../../docs/about/docs_changelog.rst:295 #: ../../docs/tutorials/inputs/mouse_and_input_coordinates.rst:7 #: ../../docs/tutorials/scripting/gdscript/gdscript_advanced.rst:7 #: ../../docs/engine_details/architecture/variant_class.rst:7 @@ -60,6 +60,7 @@ msgstr "" #: ../../docs/index.rst:79 ../../docs/tutorials/2d/2d_parallax.rst:20 #: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:13 #: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:4 +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:14 msgid "Getting started" msgstr "" @@ -80,7 +81,7 @@ msgid "Class reference" msgstr "" #: ../../docs/index.rst:4 -msgid "Godot Docs – *4.5* branch" +msgid "Godot Docs – *master* branch" msgstr "" #: ../../docs/index.rst:8 @@ -249,6 +250,7 @@ msgstr "" #: ../../docs/tutorials/rendering/renderers.rst:13 #: ../../docs/tutorials/rendering/viewports.rst:7 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:5 +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:24 #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:7 #: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:7 #: ../../docs/tutorials/scripting/debug/custom_performance_monitors.rst:7 @@ -531,9 +533,10 @@ msgid "" msgstr "" #: ../../docs/about/list_of_features.rst:62 -#: ../../docs/about/docs_changelog.rst:35 -#: ../../docs/about/docs_changelog.rst:243 -#: ../../docs/about/docs_changelog.rst:284 +#: ../../docs/about/docs_changelog.rst:22 +#: ../../docs/about/docs_changelog.rst:61 +#: ../../docs/about/docs_changelog.rst:274 +#: ../../docs/about/docs_changelog.rst:315 #: ../../docs/tutorials/editor/external_editor.rst:43 #: ../../docs/engine_details/development/compiling/compiling_with_dotnet.rst:204 msgid "Editor" @@ -641,8 +644,8 @@ msgid "" msgstr "" #: ../../docs/about/list_of_features.rst:103 -#: ../../docs/about/docs_changelog.rst:55 -#: ../../docs/about/docs_changelog.rst:94 +#: ../../docs/about/docs_changelog.rst:86 +#: ../../docs/about/docs_changelog.rst:125 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:120 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.2.rst:128 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:88 @@ -653,7 +656,7 @@ msgstr "" #: ../../docs/tutorials/2d/index.rst:26 #: ../../docs/tutorials/2d/using_tilemaps.rst:58 #: ../../docs/tutorials/3d/index.rst:18 -#: ../../docs/tutorials/performance/thread_safe_apis.rst:71 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:82 #: ../../docs/tutorials/rendering/index.rst:4 #: ../../docs/tutorials/rendering/viewports.rst:202 msgid "Rendering" @@ -1600,9 +1603,9 @@ msgid "" msgstr "" #: ../../docs/about/list_of_features.rst:442 -#: ../../docs/about/docs_changelog.rst:60 -#: ../../docs/about/docs_changelog.rst:213 -#: ../../docs/about/docs_changelog.rst:318 +#: ../../docs/about/docs_changelog.rst:91 +#: ../../docs/about/docs_changelog.rst:244 +#: ../../docs/about/docs_changelog.rst:349 #: ../../docs/tutorials/shaders/index.rst:4 msgid "Shaders" msgstr "" @@ -1630,9 +1633,10 @@ msgid "Support for visual shader plugins." msgstr "" #: ../../docs/about/list_of_features.rst:452 -#: ../../docs/about/docs_changelog.rst:205 -#: ../../docs/about/docs_changelog.rst:323 -#: ../../docs/about/docs_changelog.rst:429 +#: ../../docs/about/docs_changelog.rst:38 +#: ../../docs/about/docs_changelog.rst:236 +#: ../../docs/about/docs_changelog.rst:354 +#: ../../docs/about/docs_changelog.rst:460 #: ../../docs/tutorials/scripting/index.rst:4 msgid "Scripting" msgstr "" @@ -1757,7 +1761,7 @@ msgid "" msgstr "" #: ../../docs/about/list_of_features.rst:502 -#: ../../docs/about/docs_changelog.rst:350 +#: ../../docs/about/docs_changelog.rst:381 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:150 #: ../../docs/tutorials/audio/index.rst:6 #: ../../docs/tutorials/export/exporting_for_web.rst:275 @@ -1916,7 +1920,7 @@ msgid "" msgstr "" #: ../../docs/about/list_of_features.rst:558 -#: ../../docs/about/docs_changelog.rst:295 +#: ../../docs/about/docs_changelog.rst:326 #: ../../docs/tutorials/rendering/viewports.rst:38 #: ../../docs/tutorials/ui/custom_gui_controls.rst:114 msgid "Input" @@ -2000,7 +2004,7 @@ msgid "" msgstr "" #: ../../docs/about/list_of_features.rst:588 -#: ../../docs/about/docs_changelog.rst:382 +#: ../../docs/about/docs_changelog.rst:413 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:166 #: ../../docs/tutorials/export/exporting_for_web.rst:301 #: ../../docs/tutorials/networking/index.rst:5 @@ -2063,7 +2067,7 @@ msgid "" msgstr "" #: ../../docs/about/list_of_features.rst:608 -#: ../../docs/about/docs_changelog.rst:367 +#: ../../docs/about/docs_changelog.rst:398 #: ../../docs/tutorials/i18n/index.rst:4 msgid "Internationalization" msgstr "" @@ -2388,9 +2392,9 @@ msgid "" msgstr "" #: ../../docs/about/list_of_features.rst:730 -#: ../../docs/about/docs_changelog.rst:180 -#: ../../docs/about/docs_changelog.rst:238 -#: ../../docs/about/docs_changelog.rst:469 +#: ../../docs/about/docs_changelog.rst:211 +#: ../../docs/about/docs_changelog.rst:269 +#: ../../docs/about/docs_changelog.rst:500 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:49 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.2.rst:62 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:39 @@ -2488,7 +2492,7 @@ msgid "" msgstr "" #: ../../docs/about/list_of_features.rst:764 -#: ../../docs/about/docs_changelog.rst:521 +#: ../../docs/about/docs_changelog.rst:552 msgid "Miscellaneous" msgstr "" @@ -3081,7 +3085,7 @@ msgstr "" #: ../../docs/about/system_requirements.rst:268 #: ../../docs/about/system_requirements.rst:274 -msgid "*Example (Metal): Apple A11 (iPhone 8/X)*" +msgid "*Example (Metal): Apple A12 (iPhone XR/XS)*" msgstr "" #: ../../docs/about/system_requirements.rst:270 @@ -3328,24 +3332,24 @@ msgstr "" #: ../../docs/tutorials/platform/android/index.rst:4 #: ../../docs/tutorials/rendering/jitter_stutter.rst:177 #: ../../docs/tutorials/ui/gui_using_fonts.rst:813 -#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:135 +#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:146 msgid "Android" msgstr "" #: ../../docs/about/faq.rst:56 #: ../../docs/tutorials/rendering/jitter_stutter.rst:184 -#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:141 +#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:133 msgid "iOS" msgstr "" #: ../../docs/about/faq.rst:57 #: ../../docs/tutorials/export/one-click_deploy.rst:124 -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:382 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:378 #: ../../docs/tutorials/platform/web/index.rst:7 #: ../../docs/tutorials/rendering/renderers.rst:158 #: ../../docs/engine_details/development/compiling/optimizing_for_size.rst:368 #: ../../docs/engine_details/development/debugging/using_sanitizers.rst:200 -#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:146 +#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:138 msgid "Web" msgstr "" @@ -3715,7 +3719,7 @@ msgid "" msgstr "" #: ../../docs/about/faq.rst:277 -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:358 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:354 #: ../../docs/tutorials/rendering/jitter_stutter.rst:151 #: ../../docs/tutorials/ui/gui_using_fonts.rst:813 msgid "Linux" @@ -3781,44 +3785,21 @@ msgid "" msgstr "" #: ../../docs/about/faq.rst:313 -msgid "Why does Godot prioritize Vulkan and OpenGL over Direct3D?" -msgstr "" - -#: ../../docs/about/faq.rst:315 -msgid "" -"Godot aims for cross-platform compatibility and open standards first and " -"foremost. OpenGL and Vulkan are the technologies that are both open and " -"available on (nearly) all platforms. Thanks to this design decision, a " -"project developed with Godot on Windows will run out of the box on Linux, " -"macOS, and more." -msgstr "" - -#: ../../docs/about/faq.rst:321 -msgid "" -"While Vulkan and OpenGL remain our primary focus for their open standard and " -"cross-platform benefits, Godot 4.3 introduced experimental support for " -"Direct3D 12. This addition aims to enhance performance and compatibility on " -"platforms where Direct3D 12 is prevalent, such as Windows and Xbox. However, " -"Vulkan and OpenGL will continue as the default rendering drivers on all " -"platforms, including Windows." -msgstr "" - -#: ../../docs/about/faq.rst:328 msgid "Why does Godot aim to keep its core feature set small?" msgstr "" -#: ../../docs/about/faq.rst:330 +#: ../../docs/about/faq.rst:315 msgid "" "Godot intentionally does not include features that can be implemented by add-" "ons unless they are used very often. One example of something not used often " "is advanced artificial intelligence functionality." msgstr "" -#: ../../docs/about/faq.rst:334 +#: ../../docs/about/faq.rst:319 msgid "There are several reasons for this:" msgstr "" -#: ../../docs/about/faq.rst:336 +#: ../../docs/about/faq.rst:321 msgid "" "**Code maintenance and surface for bugs.** Every time we accept new code in " "the Godot repository, existing contributors often take the responsibility of " @@ -3829,7 +3810,7 @@ msgid "" "checked for regressions keeps increasing over time." msgstr "" -#: ../../docs/about/faq.rst:344 +#: ../../docs/about/faq.rst:329 msgid "" "**Ease of contribution.** By keeping the codebase small and tidy, it can " "remain fast and easy to compile from source. This makes it easier for new " @@ -3837,7 +3818,7 @@ msgid "" "high-end hardware." msgstr "" -#: ../../docs/about/faq.rst:349 +#: ../../docs/about/faq.rst:334 msgid "" "**Keeping the binary size small for the editor.** Not everyone has a fast " "Internet connection. Ensuring that everyone can download the Godot editor, " @@ -3845,7 +3826,7 @@ msgid "" "developers in all countries." msgstr "" -#: ../../docs/about/faq.rst:354 +#: ../../docs/about/faq.rst:339 msgid "" "**Keeping the binary size small for export templates.** This directly " "impacts the size of projects exported with Godot. On mobile and web " @@ -3855,7 +3836,7 @@ msgid "" "usage caps are often in effect in those countries." msgstr "" -#: ../../docs/about/faq.rst:361 +#: ../../docs/about/faq.rst:346 msgid "" "For all the reasons above, we have to be selective of what we can accept as " "core functionality in Godot. This is why we are aiming to move some core " @@ -3867,13 +3848,13 @@ msgid "" "project.)" msgstr "" -#: ../../docs/about/faq.rst:370 +#: ../../docs/about/faq.rst:355 msgid "" "How should assets be created to handle multiple resolutions and aspect " "ratios?" msgstr "" -#: ../../docs/about/faq.rst:372 +#: ../../docs/about/faq.rst:357 msgid "" "This question pops up often and it's probably thanks to the misunderstanding " "created by Apple when they originally doubled the resolution of their " @@ -3884,7 +3865,7 @@ msgid "" "created, with a very wide range of sizes and DPIs." msgstr "" -#: ../../docs/about/faq.rst:380 +#: ../../docs/about/faq.rst:365 msgid "" "The most common and proper way to achieve this is to, instead, use a single " "base resolution for the game and only handle different screen aspect ratios. " @@ -3892,7 +3873,7 @@ msgid "" "vertical or horizontal FOV." msgstr "" -#: ../../docs/about/faq.rst:385 +#: ../../docs/about/faq.rst:370 msgid "" "Choose a single base resolution for your game. Even if there are devices " "that go up to 1440p and devices that go down to 400p, regular hardware " @@ -3903,14 +3884,14 @@ msgid "" "loading." msgstr "" -#: ../../docs/about/faq.rst:393 +#: ../../docs/about/faq.rst:378 msgid "" "Use the stretch options in Godot; canvas items stretching while keeping " "aspect ratios works best. Check the :ref:`doc_multiple_resolutions` tutorial " "on how to achieve this." msgstr "" -#: ../../docs/about/faq.rst:397 +#: ../../docs/about/faq.rst:382 msgid "" "Determine a minimum resolution and then decide if you want your game to " "stretch vertically or horizontally for different aspect ratios, or if there " @@ -3918,32 +3899,32 @@ msgid "" "explained in :ref:`doc_multiple_resolutions`." msgstr "" -#: ../../docs/about/faq.rst:402 +#: ../../docs/about/faq.rst:387 msgid "" "For user interfaces, use the :ref:`anchoring ` to " "determine where controls should stay and move. If UIs are more complex, " "consider learning about Containers." msgstr "" -#: ../../docs/about/faq.rst:406 +#: ../../docs/about/faq.rst:391 msgid "And that's it! Your game should work in multiple resolutions." msgstr "" -#: ../../docs/about/faq.rst:409 +#: ../../docs/about/faq.rst:394 msgid "When is the next release of Godot out?" msgstr "" -#: ../../docs/about/faq.rst:411 +#: ../../docs/about/faq.rst:396 msgid "" "When it's ready! See :ref:`doc_release_policy_when_is_next_release_out` for " "more information." msgstr "" -#: ../../docs/about/faq.rst:415 +#: ../../docs/about/faq.rst:400 msgid "Which Godot version should I use for a new project?" msgstr "" -#: ../../docs/about/faq.rst:417 +#: ../../docs/about/faq.rst:402 msgid "" "We recommend using Godot 4.x for new projects, but depending on the feature " "set you need, it may be better to use 3.x instead. " @@ -3951,11 +3932,11 @@ msgid "" "information." msgstr "" -#: ../../docs/about/faq.rst:422 +#: ../../docs/about/faq.rst:407 msgid "Should I upgrade my project to use new Godot versions?" msgstr "" -#: ../../docs/about/faq.rst:424 +#: ../../docs/about/faq.rst:409 msgid "" "Some new versions are safer to upgrade to than others. In general, whether " "you should upgrade depends on your project's circumstances. " @@ -3963,26 +3944,26 @@ msgid "" "information." msgstr "" -#: ../../docs/about/faq.rst:429 +#: ../../docs/about/faq.rst:414 msgid "Should I use the Forward+, Mobile, or Compatibility renderer?" msgstr "" -#: ../../docs/about/faq.rst:431 +#: ../../docs/about/faq.rst:416 msgid "" "You can find a detailed comparison of the renderers in :ref:`doc_renderers`." msgstr "" -#: ../../docs/about/faq.rst:434 +#: ../../docs/about/faq.rst:419 msgid "I would like to contribute! How can I get started?" msgstr "" -#: ../../docs/about/faq.rst:436 +#: ../../docs/about/faq.rst:421 msgid "" "Awesome! As an open source project, Godot thrives off of the innovation and " "the ambition of developers like you." msgstr "" -#: ../../docs/about/faq.rst:439 +#: ../../docs/about/faq.rst:424 msgid "" "The best way to start contributing to Godot is by using it and reporting any " "`issues `_ that you might " @@ -3992,7 +3973,7 @@ msgid "" "godot-docs/issues>`_." msgstr "" -#: ../../docs/about/faq.rst:445 +#: ../../docs/about/faq.rst:430 msgid "" "If you feel ready to submit your first PR, pick any issue that resonates " "with you from one of the links above and try your hand at fixing it. You " @@ -4001,7 +3982,7 @@ msgid "" "system that Godot developers use." msgstr "" -#: ../../docs/about/faq.rst:450 +#: ../../docs/about/faq.rst:435 msgid "" "We explain how to work with the engine source, how to edit the " "documentation, and what other ways to contribute are there in our " @@ -4009,11 +3990,11 @@ msgid "" "latest/organization/how_to_contribute.html>`__." msgstr "" -#: ../../docs/about/faq.rst:454 +#: ../../docs/about/faq.rst:439 msgid "I have a great idea for Godot. How can I share it?" msgstr "" -#: ../../docs/about/faq.rst:456 +#: ../../docs/about/faq.rst:441 msgid "" "We are always looking for suggestions about how to improve the engine. User " "feedback is the main driving force behind our decision-making process, and " @@ -4021,7 +4002,7 @@ msgid "" "data point for us when considering engine enhancements." msgstr "" -#: ../../docs/about/faq.rst:461 +#: ../../docs/about/faq.rst:446 msgid "" "If you experience a usability problem or are missing a feature in the " "current version of Godot, start by discussing it with our `community " @@ -4031,7 +4012,7 @@ msgid "" "good solution together." msgstr "" -#: ../../docs/about/faq.rst:467 +#: ../../docs/about/faq.rst:452 msgid "" "If you come up with a well-defined idea for the engine, feel free to open a " "`proposal issue `_. " @@ -4041,7 +4022,7 @@ msgid "" "appreciated!" msgstr "" -#: ../../docs/about/faq.rst:473 +#: ../../docs/about/faq.rst:458 msgid "" "If you only have a general idea without specific details, you can open a " "`proposal discussion `_ document before creating a proposal to learn more " "about the process." msgstr "" -#: ../../docs/about/faq.rst:484 +#: ../../docs/about/faq.rst:469 msgid "Is it possible to use Godot to create non-game applications?" msgstr "" -#: ../../docs/about/faq.rst:486 +#: ../../docs/about/faq.rst:471 msgid "" "Yes! Godot features an extensive built-in UI system, and its small " "distribution size can make it a suitable alternative to frameworks like " "Electron or Qt." msgstr "" -#: ../../docs/about/faq.rst:489 +#: ../../docs/about/faq.rst:474 msgid "" "When creating a non-game application, make sure to enable :ref:`low-" "processor mode ` in the Project Settings to decrease CPU and GPU usage." msgstr "" -#: ../../docs/about/faq.rst:493 +#: ../../docs/about/faq.rst:478 msgid "" "Check out `Material Maker `__ " "and `Pixelorama `__ for " "examples of open source applications made with Godot." msgstr "" -#: ../../docs/about/faq.rst:500 +#: ../../docs/about/faq.rst:485 msgid "Is it possible to use Godot as a library?" msgstr "" -#: ../../docs/about/faq.rst:502 +#: ../../docs/about/faq.rst:487 msgid "" -"Godot is meant to be used with its editor. We recommend you give it a try, " -"as it will most likely save you time in the long term. There are no plans to " -"make Godot usable as a library, as it would make the rest of the engine more " -"convoluted and difficult to use for casual users." +"If you are looking to make a game with Godot, keep in mind Godot is designed " +"to be used with its editor. We recommend you give it a try, as it will most " +"likely save you time in the long term." msgstr "" -#: ../../docs/about/faq.rst:507 +#: ../../docs/about/faq.rst:491 msgid "" -"If you want to use a rendering library, look into using an established " -"rendering engine instead. Keep in mind rendering engines usually have " -"smaller communities compared to Godot. This will make it more difficult to " -"find answers to your questions." +"For more specialized applications, it can make sense to look into using " +"Godot as a library. Since Godot 4.6, there is **experimental** support for " +"using Godot as a static or shared library in the form of LibGodot. This is " +"currently supported on Windows, macOS, and Linux. Support for Android and " +"iOS is planned for a future release." msgstr "" -#: ../../docs/about/faq.rst:513 +#: ../../docs/about/faq.rst:497 +msgid "" +"You can find sample applications that use Godot as a library in the `migeran/" +"libgodot_project GitHub repository `__." +msgstr "" + +#: ../../docs/about/faq.rst:501 msgid "What user interface toolkit does Godot use?" msgstr "" -#: ../../docs/about/faq.rst:515 +#: ../../docs/about/faq.rst:503 msgid "" "Godot does not use a standard :abbr:`GUI (Graphical User Interface)` toolkit " "like GTK, Qt or wxWidgets. Instead, Godot uses its own user interface " -"toolkit, rendered using OpenGL ES or Vulkan. This toolkit is exposed in the " -"form of Control nodes, which are used to render the editor (which is written " -"in C++). These Control nodes can also be used in projects from any scripting " -"language supported by Godot." +"toolkit, which is always rendered using hardware acceleration. There is no " +"built-in software fallback, although external solutions that emulate " +"graphics APIs on the CPU can be used." msgstr "" -#: ../../docs/about/faq.rst:522 +#: ../../docs/about/faq.rst:508 +msgid "" +"This toolkit is exposed in the form of Control nodes, which are used to " +"render the editor (which is written in C++). These Control nodes can also be " +"used in projects from any scripting language supported by Godot." +msgstr "" + +#: ../../docs/about/faq.rst:512 msgid "" "This custom toolkit makes it possible to benefit from hardware acceleration " "and have a consistent appearance across all platforms. On top of that, it " @@ -4125,31 +4119,32 @@ msgid "" "itself is one of the most complex users of Godot's UI system." msgstr "" -#: ../../docs/about/faq.rst:528 +#: ../../docs/about/faq.rst:518 msgid "" -"This custom UI toolkit :ref:`can't be used as a library " -"`, but you can still :ref:`use Godot to create " -"non-game applications by using the editor `." +"This custom UI toolkit can be :ref:`embedded into other applications " +"` (experimental). However, the preferred way " +"to use it is to :ref:`use Godot to create non-game applications with the " +"editor `." msgstr "" -#: ../../docs/about/faq.rst:535 +#: ../../docs/about/faq.rst:525 msgid "Why does Godot use the SCons build system?" msgstr "" -#: ../../docs/about/faq.rst:537 +#: ../../docs/about/faq.rst:527 msgid "" "Godot uses the `SCons `__ build system. There are no " "plans to switch to a different build system in the near future. There are " "many reasons why we have chosen SCons over other alternatives. For example:" msgstr "" -#: ../../docs/about/faq.rst:541 +#: ../../docs/about/faq.rst:531 msgid "" "Godot can be compiled for a dozen different platforms: all PC platforms, all " "mobile platforms, many consoles, and WebAssembly." msgstr "" -#: ../../docs/about/faq.rst:543 +#: ../../docs/about/faq.rst:533 msgid "" "Developers often need to compile for several of the platforms **at the same " "time**, or even different targets of the same platform. They can't afford " @@ -4157,13 +4152,13 @@ msgid "" "no sweat, without breaking the builds." msgstr "" -#: ../../docs/about/faq.rst:547 +#: ../../docs/about/faq.rst:537 msgid "" "SCons will *never* break a build no matter how many changes, configurations, " "additions, removals etc." msgstr "" -#: ../../docs/about/faq.rst:549 +#: ../../docs/about/faq.rst:539 msgid "" "Godot's build process is not simple. Several files are generated by code " "(binders), others are parsed (shaders), and others need to offer " @@ -4173,37 +4168,37 @@ msgid "" "building." msgstr "" -#: ../../docs/about/faq.rst:554 +#: ../../docs/about/faq.rst:544 msgid "" "Godot's build process makes heavy use of cross-compiling tools. Each " "platform has a specific detection process, and all these must be handled as " "specific cases with special code written for each." msgstr "" -#: ../../docs/about/faq.rst:558 +#: ../../docs/about/faq.rst:548 msgid "" "Please try to keep an open mind and get at least a little familiar with " "SCons if you are planning to build Godot yourself." msgstr "" -#: ../../docs/about/faq.rst:564 +#: ../../docs/about/faq.rst:554 msgid "Why does Godot not use STL (Standard Template Library)?" msgstr "" -#: ../../docs/about/faq.rst:566 +#: ../../docs/about/faq.rst:556 msgid "" "Like many other libraries (Qt as an example), Godot does not make use of STL " "(with a few exceptions such as threading primitives). We believe STL is a " "great general-purpose library, but we had special requirements for Godot." msgstr "" -#: ../../docs/about/faq.rst:570 +#: ../../docs/about/faq.rst:560 msgid "" "STL templates create very large symbols, which results in huge debug " "binaries. We use few templates with very short names instead." msgstr "" -#: ../../docs/about/faq.rst:572 +#: ../../docs/about/faq.rst:562 msgid "" "Most of our containers cater to special needs, like Vector, which uses copy " "on write and we use to pass data around, or the RID system, which requires " @@ -4211,34 +4206,34 @@ msgid "" "designed to integrate seamlessly with internal engine types." msgstr "" -#: ../../docs/about/faq.rst:576 +#: ../../docs/about/faq.rst:566 msgid "" "Our containers have memory tracking built-in, which helps better track " "memory usage." msgstr "" -#: ../../docs/about/faq.rst:577 +#: ../../docs/about/faq.rst:567 msgid "" "For large arrays, we use pooled memory, which can be mapped to either a " "preallocated buffer or virtual memory." msgstr "" -#: ../../docs/about/faq.rst:579 +#: ../../docs/about/faq.rst:569 msgid "" "We use our custom String type, as the one provided by STL is too basic and " "lacks proper internationalization support." msgstr "" -#: ../../docs/about/faq.rst:582 +#: ../../docs/about/faq.rst:572 msgid "" "Check out :ref:`Godot's container types ` for alternatives." msgstr "" -#: ../../docs/about/faq.rst:585 +#: ../../docs/about/faq.rst:575 msgid "Why does Godot not use exceptions?" msgstr "" -#: ../../docs/about/faq.rst:587 +#: ../../docs/about/faq.rst:577 msgid "" "We believe games should not crash, no matter what. If an unexpected " "situation happens, Godot will print an error (which can be traced even to " @@ -4246,17 +4241,17 @@ msgid "" "going." msgstr "" -#: ../../docs/about/faq.rst:592 +#: ../../docs/about/faq.rst:582 msgid "" "Additionally, exceptions significantly increase the binary size for the " "executable and result in increased compile times." msgstr "" -#: ../../docs/about/faq.rst:596 +#: ../../docs/about/faq.rst:586 msgid "Does Godot use an ECS (Entity Component System)?" msgstr "" -#: ../../docs/about/faq.rst:598 +#: ../../docs/about/faq.rst:588 msgid "" "Godot does **not** use an ECS and relies on inheritance instead. While there " "is no universally better approach, we found that using an inheritance-based " @@ -4264,30 +4259,30 @@ msgid "" "use cases." msgstr "" -#: ../../docs/about/faq.rst:602 +#: ../../docs/about/faq.rst:592 msgid "" "That said, nothing prevents you from making use of composition in your " "project by creating child Nodes with individual scripts. These nodes can " "then be added and removed at runtime to dynamically add and remove behaviors." msgstr "" -#: ../../docs/about/faq.rst:606 +#: ../../docs/about/faq.rst:596 msgid "" "More information about Godot's design choices can be found in `this article " "`__." msgstr "" -#: ../../docs/about/faq.rst:610 +#: ../../docs/about/faq.rst:600 msgid "Why does Godot not force users to implement DOD (Data-Oriented Design)?" msgstr "" -#: ../../docs/about/faq.rst:612 +#: ../../docs/about/faq.rst:602 msgid "" "While Godot internally attempts to use cache coherency as much as possible, " "we believe users don't need to be forced to use DOD practices." msgstr "" -#: ../../docs/about/faq.rst:615 +#: ../../docs/about/faq.rst:605 msgid "" "DOD is mostly a cache coherency optimization that can only provide " "significant performance improvements when dealing with dozens of thousands " @@ -4297,34 +4292,34 @@ msgid "" "should consider a different approach to optimization." msgstr "" -#: ../../docs/about/faq.rst:622 +#: ../../docs/about/faq.rst:612 msgid "" "The vast majority of games do not need this and Godot provides handy helpers " "to do the job for most cases when you do." msgstr "" -#: ../../docs/about/faq.rst:625 +#: ../../docs/about/faq.rst:615 msgid "" "If a game needs to process such a large amount of objects, our " "recommendation is to use C++ and GDExtensions for performance-heavy tasks " "and GDScript (or C#) for the rest of the game." msgstr "" -#: ../../docs/about/faq.rst:630 +#: ../../docs/about/faq.rst:620 msgid "How can I support Godot development or contribute?" msgstr "" -#: ../../docs/about/faq.rst:632 +#: ../../docs/about/faq.rst:622 msgid "" "See `How to contribute `__." msgstr "" -#: ../../docs/about/faq.rst:635 +#: ../../docs/about/faq.rst:625 msgid "Who is working on Godot? How can I contact you?" msgstr "" -#: ../../docs/about/faq.rst:637 +#: ../../docs/about/faq.rst:627 msgid "" "See the corresponding page on the `Godot website `_." @@ -4683,11 +4678,11 @@ msgid "**Support level**" msgstr "" #: ../../docs/about/release_policy.rst:87 -msgid "Godot 4.5 (`master`)" +msgid "Godot 4.6 (`master`)" msgstr "" #: ../../docs/about/release_policy.rst:87 -msgid "Q3 2025 (estimate)" +msgid "Q1 2026 (estimate)" msgstr "" #: ../../docs/about/release_policy.rst:87 @@ -4696,241 +4691,259 @@ msgid "" "improvements, as well as bug fixes, while under development." msgstr "" -#: ../../docs/about/release_policy.rst:132 +#: ../../docs/about/release_policy.rst:133 msgid "unstable" msgstr "" #: ../../docs/about/release_policy.rst:90 -msgid "Godot 4.4" +msgid "Godot 4.5" msgstr "" #: ../../docs/about/release_policy.rst:90 -msgid "March 2025" +msgid "September 2025" msgstr "" #: ../../docs/about/release_policy.rst:90 -#: ../../docs/about/release_policy.rst:93 -#: ../../docs/about/release_policy.rst:105 +#: ../../docs/about/release_policy.rst:106 msgid "" "|supported| Receives fixes for bugs and security issues, as well as patches " "that enable platform support." msgstr "" -#: ../../docs/about/release_policy.rst:129 +#: ../../docs/about/release_policy.rst:130 msgid "supported" msgstr "" #: ../../docs/about/release_policy.rst:93 -msgid "Godot 4.3" +msgid "Godot 4.4" msgstr "" #: ../../docs/about/release_policy.rst:93 -msgid "August 2024" +msgid "March 2025" msgstr "" -#: ../../docs/about/release_policy.rst:96 -msgid "Godot 4.2" -msgstr "" - -#: ../../docs/about/release_policy.rst:96 -msgid "November 2023" -msgstr "" - -#: ../../docs/about/release_policy.rst:96 -#: ../../docs/about/release_policy.rst:108 +#: ../../docs/about/release_policy.rst:93 msgid "|partial| Receives fixes for security and platform support issues only." msgstr "" -#: ../../docs/about/release_policy.rst:130 +#: ../../docs/about/release_policy.rst:131 msgid "partial" msgstr "" -#: ../../docs/about/release_policy.rst:98 -msgid "Godot 4.1" +#: ../../docs/about/release_policy.rst:95 +msgid "Godot 4.3" msgstr "" -#: ../../docs/about/release_policy.rst:98 -msgid "July 2023" +#: ../../docs/about/release_policy.rst:95 +msgid "August 2024" msgstr "" -#: ../../docs/about/release_policy.rst:98 -msgid "|eol| No longer supported (last update: 4.1.4)." +#: ../../docs/about/release_policy.rst:95 +msgid "|eol| No longer supported (last update: 4.3)." msgstr "" -#: ../../docs/about/release_policy.rst:131 +#: ../../docs/about/release_policy.rst:132 msgid "eol" msgstr "" -#: ../../docs/about/release_policy.rst:100 +#: ../../docs/about/release_policy.rst:97 +msgid "Godot 4.2" +msgstr "" + +#: ../../docs/about/release_policy.rst:97 +msgid "November 2023" +msgstr "" + +#: ../../docs/about/release_policy.rst:97 +msgid "|eol| No longer supported (last update: 4.2.2)." +msgstr "" + +#: ../../docs/about/release_policy.rst:99 +msgid "Godot 4.1" +msgstr "" + +#: ../../docs/about/release_policy.rst:99 +msgid "July 2023" +msgstr "" + +#: ../../docs/about/release_policy.rst:99 +msgid "|eol| No longer supported (last update: 4.1.4)." +msgstr "" + +#: ../../docs/about/release_policy.rst:101 msgid "Godot 4.0" msgstr "" -#: ../../docs/about/release_policy.rst:100 +#: ../../docs/about/release_policy.rst:101 msgid "March 2023" msgstr "" -#: ../../docs/about/release_policy.rst:100 +#: ../../docs/about/release_policy.rst:101 msgid "|eol| No longer supported (last update: 4.0.4)." msgstr "" -#: ../../docs/about/release_policy.rst:102 +#: ../../docs/about/release_policy.rst:103 msgid "Godot 3.7 (`3.x`)" msgstr "" -#: ../../docs/about/release_policy.rst:102 +#: ../../docs/about/release_policy.rst:103 msgid "No ETA for now" msgstr "" -#: ../../docs/about/release_policy.rst:102 +#: ../../docs/about/release_policy.rst:103 msgid "" "|supported| *Beta.* Receives new features, usability and performance " "improvements, as well as bug fixes, while under development." msgstr "" -#: ../../docs/about/release_policy.rst:105 +#: ../../docs/about/release_policy.rst:106 msgid "Godot 3.6" msgstr "" -#: ../../docs/about/release_policy.rst:105 +#: ../../docs/about/release_policy.rst:106 msgid "September 2024" msgstr "" -#: ../../docs/about/release_policy.rst:108 +#: ../../docs/about/release_policy.rst:109 msgid "Godot 3.5" msgstr "" -#: ../../docs/about/release_policy.rst:108 +#: ../../docs/about/release_policy.rst:109 msgid "August 2022" msgstr "" -#: ../../docs/about/release_policy.rst:110 +#: ../../docs/about/release_policy.rst:109 +msgid "|eol| No longer supported (last update: 3.5.3)." +msgstr "" + +#: ../../docs/about/release_policy.rst:111 msgid "Godot 3.4" msgstr "" -#: ../../docs/about/release_policy.rst:110 +#: ../../docs/about/release_policy.rst:111 msgid "November 2021" msgstr "" -#: ../../docs/about/release_policy.rst:110 +#: ../../docs/about/release_policy.rst:111 msgid "|eol| No longer supported (last update: 3.4.5)." msgstr "" -#: ../../docs/about/release_policy.rst:112 +#: ../../docs/about/release_policy.rst:113 msgid "Godot 3.3" msgstr "" -#: ../../docs/about/release_policy.rst:112 +#: ../../docs/about/release_policy.rst:113 msgid "April 2021" msgstr "" -#: ../../docs/about/release_policy.rst:112 +#: ../../docs/about/release_policy.rst:113 msgid "|eol| No longer supported (last update: 3.3.4)." msgstr "" -#: ../../docs/about/release_policy.rst:114 +#: ../../docs/about/release_policy.rst:115 msgid "Godot 3.2" msgstr "" -#: ../../docs/about/release_policy.rst:114 +#: ../../docs/about/release_policy.rst:115 msgid "January 2020" msgstr "" -#: ../../docs/about/release_policy.rst:114 +#: ../../docs/about/release_policy.rst:115 msgid "|eol| No longer supported (last update: 3.2.3)." msgstr "" -#: ../../docs/about/release_policy.rst:116 +#: ../../docs/about/release_policy.rst:117 msgid "Godot 3.1" msgstr "" -#: ../../docs/about/release_policy.rst:116 +#: ../../docs/about/release_policy.rst:117 msgid "March 2019" msgstr "" -#: ../../docs/about/release_policy.rst:116 +#: ../../docs/about/release_policy.rst:117 msgid "|eol| No longer supported (last update: 3.1.2)." msgstr "" -#: ../../docs/about/release_policy.rst:118 +#: ../../docs/about/release_policy.rst:119 msgid "Godot 3.0" msgstr "" -#: ../../docs/about/release_policy.rst:118 +#: ../../docs/about/release_policy.rst:119 msgid "January 2018" msgstr "" -#: ../../docs/about/release_policy.rst:118 +#: ../../docs/about/release_policy.rst:119 msgid "|eol| No longer supported (last update: 3.0.6)." msgstr "" -#: ../../docs/about/release_policy.rst:120 +#: ../../docs/about/release_policy.rst:121 msgid "Godot 2.1" msgstr "" -#: ../../docs/about/release_policy.rst:120 +#: ../../docs/about/release_policy.rst:121 msgid "July 2016" msgstr "" -#: ../../docs/about/release_policy.rst:120 +#: ../../docs/about/release_policy.rst:121 msgid "|eol| No longer supported (last update: 2.1.6)." msgstr "" -#: ../../docs/about/release_policy.rst:122 +#: ../../docs/about/release_policy.rst:123 msgid "Godot 2.0" msgstr "" -#: ../../docs/about/release_policy.rst:122 +#: ../../docs/about/release_policy.rst:123 msgid "February 2016" msgstr "" -#: ../../docs/about/release_policy.rst:122 +#: ../../docs/about/release_policy.rst:123 msgid "|eol| No longer supported (last update: 2.0.4.1)." msgstr "" -#: ../../docs/about/release_policy.rst:124 +#: ../../docs/about/release_policy.rst:125 msgid "Godot 1.1" msgstr "" -#: ../../docs/about/release_policy.rst:124 +#: ../../docs/about/release_policy.rst:125 msgid "May 2015" msgstr "" -#: ../../docs/about/release_policy.rst:124 -#: ../../docs/about/release_policy.rst:126 +#: ../../docs/about/release_policy.rst:125 +#: ../../docs/about/release_policy.rst:127 msgid "|eol| No longer supported." msgstr "" -#: ../../docs/about/release_policy.rst:126 +#: ../../docs/about/release_policy.rst:127 msgid "Godot 1.0" msgstr "" -#: ../../docs/about/release_policy.rst:126 +#: ../../docs/about/release_policy.rst:127 msgid "December 2014" msgstr "" -#: ../../docs/about/release_policy.rst:134 +#: ../../docs/about/release_policy.rst:135 msgid "" "**Legend:** |supported| Full support – |partial| Partial support – |eol| No " "support (end of life) – |unstable| Development version" msgstr "" -#: ../../docs/about/release_policy.rst:140 +#: ../../docs/about/release_policy.rst:141 msgid "" "Pre-release Godot versions aren't intended to be used in production and are " "provided for testing purposes only." msgstr "" -#: ../../docs/about/release_policy.rst:145 +#: ../../docs/about/release_policy.rst:146 msgid "" "See :ref:`doc_upgrading_to_godot_4` for instructions on migrating a project " "from Godot 3.x to 4.x." msgstr "" -#: ../../docs/about/release_policy.rst:151 +#: ../../docs/about/release_policy.rst:152 msgid "Which version should I use for a new project?" msgstr "" -#: ../../docs/about/release_policy.rst:153 +#: ../../docs/about/release_policy.rst:154 msgid "" "We recommend using Godot 4.x for new projects, as the Godot 4.x series will " "be supported long after 3.x stops receiving updates in the future. One " @@ -4941,17 +4954,17 @@ msgid "" "trying to use a specific node or method that was renamed in Godot 4.x)." msgstr "" -#: ../../docs/about/release_policy.rst:161 +#: ../../docs/about/release_policy.rst:162 msgid "" "If your project requires a feature that is missing in 4.x (such as GLES2/" "WebGL 1.0), you should use Godot 3.x for a new project instead." msgstr "" -#: ../../docs/about/release_policy.rst:167 +#: ../../docs/about/release_policy.rst:168 msgid "Should I upgrade my project to use new engine versions?" msgstr "" -#: ../../docs/about/release_policy.rst:171 +#: ../../docs/about/release_policy.rst:172 msgid "" "Upgrading software while working on a project is inherently risky, so " "consider whether it's a good idea for your project before attempting an " @@ -4959,13 +4972,13 @@ msgid "" "prevent losing data in case the upgrade goes wrong." msgstr "" -#: ../../docs/about/release_policy.rst:176 +#: ../../docs/about/release_policy.rst:177 msgid "" "That said, we do our best to keep minor and especially patch releases " "compatible with existing projects." msgstr "" -#: ../../docs/about/release_policy.rst:179 +#: ../../docs/about/release_policy.rst:180 msgid "" "The general recommendation is to upgrade your project to follow new *patch* " "releases, such as upgrading from 4.0.2 to 4.0.3. This ensures you get bug " @@ -4974,7 +4987,7 @@ msgid "" "last patch release receives support on official community platforms." msgstr "" -#: ../../docs/about/release_policy.rst:185 +#: ../../docs/about/release_policy.rst:186 msgid "" "For *minor* releases, you should determine whether it's a good idea to " "upgrade on a case-by-case basis. We've made a lot of effort in making the " @@ -4985,7 +4998,7 @@ msgid "" "as *experimental* in the documentation." msgstr "" -#: ../../docs/about/release_policy.rst:193 +#: ../../docs/about/release_policy.rst:194 msgid "" "*Major* releases bring a lot of new functionality, but they also remove " "previously existing functionality and may raise hardware requirements. They " @@ -4997,24 +5010,24 @@ msgid "" "really needs the new features that come with 4.0+." msgstr "" -#: ../../docs/about/release_policy.rst:205 +#: ../../docs/about/release_policy.rst:206 msgid "When is the next release out?" msgstr "" -#: ../../docs/about/release_policy.rst:209 +#: ../../docs/about/release_policy.rst:210 msgid "" "While Godot contributors aren't working under any deadlines, we strive to " "publish minor releases relatively frequently." msgstr "" -#: ../../docs/about/release_policy.rst:212 +#: ../../docs/about/release_policy.rst:213 msgid "" "In particular, after the very long release cycle for 4.0, we are pivoting to " "a faster-paced development workflow, 4.1 released 4 months after 4.0, and " "4.2 released 4 months after 4.1." msgstr "" -#: ../../docs/about/release_policy.rst:216 +#: ../../docs/about/release_policy.rst:217 msgid "" "Frequent minor releases will enable us to ship new features faster (possibly " "as experimental), get user feedback quickly, and iterate to improve those " @@ -5022,14 +5035,14 @@ msgid "" "improved more steadily with a faster path to the end users." msgstr "" -#: ../../docs/about/release_policy.rst:221 +#: ../../docs/about/release_policy.rst:222 msgid "" "Maintenance (patch) releases are released as needed with potentially very " "short development cycles, to provide users of the current stable branch with " "the latest bug fixes for their production needs." msgstr "" -#: ../../docs/about/release_policy.rst:225 +#: ../../docs/about/release_policy.rst:226 msgid "" "There is currently no planned release date for the next 3.x minor version, " "3.7. The current stable release, 3.6, may be the last stable branch of Godot " @@ -5037,22 +5050,22 @@ msgid "" "continue to maintain it." msgstr "" -#: ../../docs/about/release_policy.rst:231 +#: ../../docs/about/release_policy.rst:232 msgid "What are the criteria for compatibility across engine versions?" msgstr "" -#: ../../docs/about/release_policy.rst:235 +#: ../../docs/about/release_policy.rst:236 msgid "" "This section is intended to be used by contributors to determine which " "changes are safe for a given release. The list is not exhaustive; it only " "outlines the most common situations encountered during Godot's development." msgstr "" -#: ../../docs/about/release_policy.rst:239 +#: ../../docs/about/release_policy.rst:240 msgid "The following changes are acceptable in patch releases:" msgstr "" -#: ../../docs/about/release_policy.rst:241 +#: ../../docs/about/release_policy.rst:242 msgid "" "Fixing a bug in a way that has no major negative impact on most projects, " "such as a visual or physics bug. Godot's physics engine is not " @@ -5062,38 +5075,38 @@ msgid "" "separate method)." msgstr "" -#: ../../docs/about/release_policy.rst:246 +#: ../../docs/about/release_policy.rst:247 msgid "Adding a new optional parameter to a method." msgstr "" -#: ../../docs/about/release_policy.rst:247 +#: ../../docs/about/release_policy.rst:248 msgid "Small-scale editor usability tweaks." msgstr "" -#: ../../docs/about/release_policy.rst:249 +#: ../../docs/about/release_policy.rst:250 msgid "" "Note that we tend to be more conservative with the fixes we allow in each " "subsequent patch release. For instance, 4.0.1 may receive more impactful " "fixes than 4.0.4 would." msgstr "" -#: ../../docs/about/release_policy.rst:253 +#: ../../docs/about/release_policy.rst:254 msgid "" "The following changes are acceptable in minor releases, but not patch " "releases:" msgstr "" -#: ../../docs/about/release_policy.rst:255 +#: ../../docs/about/release_policy.rst:256 msgid "Significant new features." msgstr "" -#: ../../docs/about/release_policy.rst:256 +#: ../../docs/about/release_policy.rst:257 msgid "" "Renaming a method parameter. In C#, method parameters can be passed by name " "(but not in GDScript). As a result, this can break some projects that use C#." msgstr "" -#: ../../docs/about/release_policy.rst:258 +#: ../../docs/about/release_policy.rst:259 msgid "" "Deprecating a method, member variable, or class. This is done by adding a " "deprecated flag to its class reference, which will show up in the editor. " @@ -5101,11 +5114,11 @@ msgid "" "*major* release." msgstr "" -#: ../../docs/about/release_policy.rst:262 +#: ../../docs/about/release_policy.rst:263 msgid "Changes that affect the default project theme's visuals." msgstr "" -#: ../../docs/about/release_policy.rst:263 +#: ../../docs/about/release_policy.rst:264 msgid "" "Bug fixes which significantly change the behavior or the output, with the " "aim to meet user expectations better. In comparison, in patch releases, we " @@ -5113,40 +5126,40 @@ msgid "" "likely already rely on the bug or use a workaround." msgstr "" -#: ../../docs/about/release_policy.rst:267 +#: ../../docs/about/release_policy.rst:268 msgid "Performance optimizations that result in visual changes." msgstr "" -#: ../../docs/about/release_policy.rst:269 +#: ../../docs/about/release_policy.rst:270 msgid "" "The following changes are considered **compatibility-breaking** and can only " "be performed in a new major release:" msgstr "" -#: ../../docs/about/release_policy.rst:272 +#: ../../docs/about/release_policy.rst:273 msgid "Renaming or removing a method, member variable, or class." msgstr "" -#: ../../docs/about/release_policy.rst:273 +#: ../../docs/about/release_policy.rst:274 msgid "" "Modifying a node's inheritance tree by making it inherit from a different " "class." msgstr "" -#: ../../docs/about/release_policy.rst:274 +#: ../../docs/about/release_policy.rst:275 msgid "" "Changing the default value of a project setting value in a way that affects " "existing projects. To only affect new projects, the project manager should " "write a modified ``project.godot`` instead." msgstr "" -#: ../../docs/about/release_policy.rst:278 +#: ../../docs/about/release_policy.rst:279 msgid "" "Since Godot 5.0 hasn't been branched off yet, we currently discourage making " "compatibility-breaking changes of this kind." msgstr "" -#: ../../docs/about/release_policy.rst:283 +#: ../../docs/about/release_policy.rst:284 msgid "" "When modifying a method's signature in any fashion (including adding an " "optional parameter), a GDExtension compatibility method must be created. " @@ -5167,163 +5180,193 @@ msgid "" "pages added since version 3.0." msgstr "" -#: ../../docs/about/docs_changelog.rst:13 +#: ../../docs/about/docs_changelog.rst:15 msgid "" -"This document only contains new pages so not all changes are reflected, many " -"pages have been substantially updated but are not reflected in this document." +"This document only contains new pages, so not all changes are reflected. " +"Many pages have been substantially updated but are not reflected in this " +"document." msgstr "" -#: ../../docs/about/docs_changelog.rst:17 +#: ../../docs/about/docs_changelog.rst:19 +msgid "New pages since version 4.4" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:24 +msgid ":ref:`doc_engine_compilation_configuration_editor`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:27 +#: ../../docs/about/docs_changelog.rst:114 +#: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:25 +#: ../../docs/engine_details/development/compiling/compiling_for_web.rst:81 +msgid "GDExtension" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:29 +msgid ":ref:`doc_gdextension_c_example`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:32 +#: ../../docs/about/docs_changelog.rst:66 +#: ../../docs/about/docs_changelog.rst:120 +#: ../../docs/about/docs_changelog.rst:154 +#: ../../docs/about/docs_changelog.rst:178 +#: ../../docs/about/docs_changelog.rst:226 +msgid "Migrating" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:34 +msgid ":ref:`doc_upgrading_to_godot_4.5`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:40 +msgid ":ref:`doc_logging`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:43 msgid "New pages since version 4.3" msgstr "" -#: ../../docs/about/docs_changelog.rst:20 -#: ../../docs/about/docs_changelog.rst:73 -#: ../../docs/about/docs_changelog.rst:160 -#: ../../docs/about/docs_changelog.rst:345 -#: ../../docs/about/docs_changelog.rst:450 ../../docs/tutorials/2d/index.rst:13 +#: ../../docs/about/docs_changelog.rst:46 +#: ../../docs/about/docs_changelog.rst:104 +#: ../../docs/about/docs_changelog.rst:191 +#: ../../docs/about/docs_changelog.rst:376 +#: ../../docs/about/docs_changelog.rst:481 ../../docs/tutorials/2d/index.rst:13 msgid "2D" msgstr "" -#: ../../docs/about/docs_changelog.rst:22 +#: ../../docs/about/docs_changelog.rst:48 msgid ":ref:`doc_introduction_to_2d`" msgstr "" -#: ../../docs/about/docs_changelog.rst:25 -#: ../../docs/about/docs_changelog.rst:165 -#: ../../docs/about/docs_changelog.rst:233 -#: ../../docs/about/docs_changelog.rst:259 -#: ../../docs/about/docs_changelog.rst:456 ../../docs/tutorials/3d/index.rst:4 +#: ../../docs/about/docs_changelog.rst:51 +#: ../../docs/about/docs_changelog.rst:196 +#: ../../docs/about/docs_changelog.rst:264 +#: ../../docs/about/docs_changelog.rst:290 +#: ../../docs/about/docs_changelog.rst:487 ../../docs/tutorials/3d/index.rst:4 #: ../../docs/tutorials/performance/index.rst:75 msgid "3D" msgstr "" -#: ../../docs/about/docs_changelog.rst:27 +#: ../../docs/about/docs_changelog.rst:53 msgid ":ref:`doc_spring_arm`" msgstr "" -#: ../../docs/about/docs_changelog.rst:30 +#: ../../docs/about/docs_changelog.rst:56 +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:61 #: ../../docs/tutorials/scripting/debug/index.rst:4 msgid "Debug" msgstr "" -#: ../../docs/about/docs_changelog.rst:32 +#: ../../docs/about/docs_changelog.rst:58 msgid ":ref:`doc_output_panel`" msgstr "" -#: ../../docs/about/docs_changelog.rst:37 +#: ../../docs/about/docs_changelog.rst:63 msgid ":ref:`doc_using_the_xr_editor`" msgstr "" -#: ../../docs/about/docs_changelog.rst:40 +#: ../../docs/about/docs_changelog.rst:68 +msgid ":ref:`doc_upgrading_to_godot_4.4`" +msgstr "" + +#: ../../docs/about/docs_changelog.rst:71 #: ../../docs/tutorials/3d/global_illumination/introduction_to_global_illumination.rst:115 #: ../../docs/tutorials/performance/index.rst:6 #: ../../docs/tutorials/ui/bbcode_in_richtextlabel.rst:165 msgid "Performance" msgstr "" -#: ../../docs/about/docs_changelog.rst:42 +#: ../../docs/about/docs_changelog.rst:73 msgid ":ref:`doc_pipeline_compilations`" msgstr "" -#: ../../docs/about/docs_changelog.rst:45 -#: ../../docs/about/docs_changelog.rst:152 -#: ../../docs/about/docs_changelog.rst:200 -#: ../../docs/about/docs_changelog.rst:312 -#: ../../docs/about/docs_changelog.rst:463 +#: ../../docs/about/docs_changelog.rst:76 +#: ../../docs/about/docs_changelog.rst:183 +#: ../../docs/about/docs_changelog.rst:231 +#: ../../docs/about/docs_changelog.rst:343 +#: ../../docs/about/docs_changelog.rst:494 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:104 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:73 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:94 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.5.rst:276 #: ../../docs/tutorials/2d/using_tilemaps.rst:70 #: ../../docs/tutorials/performance/cpu_optimization.rst:246 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:104 #: ../../docs/tutorials/physics/index.rst:6 msgid "Physics" msgstr "" -#: ../../docs/about/docs_changelog.rst:47 +#: ../../docs/about/docs_changelog.rst:78 msgid ":ref:`doc_physics_interpolation`" msgstr "" -#: ../../docs/about/docs_changelog.rst:48 +#: ../../docs/about/docs_changelog.rst:79 msgid ":ref:`doc_physics_interpolation_quick_start_guide`" msgstr "" -#: ../../docs/about/docs_changelog.rst:49 +#: ../../docs/about/docs_changelog.rst:80 msgid ":ref:`doc_physics_interpolation_introduction`" msgstr "" -#: ../../docs/about/docs_changelog.rst:50 +#: ../../docs/about/docs_changelog.rst:81 msgid ":ref:`doc_using_physics_interpolation`" msgstr "" -#: ../../docs/about/docs_changelog.rst:51 +#: ../../docs/about/docs_changelog.rst:82 msgid ":ref:`doc_advanced_physics_interpolation`" msgstr "" -#: ../../docs/about/docs_changelog.rst:52 +#: ../../docs/about/docs_changelog.rst:83 msgid ":ref:`doc_2d_and_3d_physics_interpolation`" msgstr "" -#: ../../docs/about/docs_changelog.rst:57 +#: ../../docs/about/docs_changelog.rst:88 msgid ":ref:`doc_renderers`" msgstr "" -#: ../../docs/about/docs_changelog.rst:62 +#: ../../docs/about/docs_changelog.rst:93 msgid ":ref:`doc_shader_functions`" msgstr "" -#: ../../docs/about/docs_changelog.rst:65 +#: ../../docs/about/docs_changelog.rst:96 msgid "New pages since version 4.2" msgstr "" -#: ../../docs/about/docs_changelog.rst:70 +#: ../../docs/about/docs_changelog.rst:101 msgid ":ref:`doc_system_requirements`" msgstr "" -#: ../../docs/about/docs_changelog.rst:75 +#: ../../docs/about/docs_changelog.rst:106 msgid ":ref:`doc_2d_parallax`" msgstr "" -#: ../../docs/about/docs_changelog.rst:78 +#: ../../docs/about/docs_changelog.rst:109 msgid "Contributing" msgstr "" -#: ../../docs/about/docs_changelog.rst:80 +#: ../../docs/about/docs_changelog.rst:111 msgid ":ref:`doc_handling_compatibility_breakages`" msgstr "" -#: ../../docs/about/docs_changelog.rst:83 -#: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:25 -#: ../../docs/engine_details/development/compiling/compiling_for_web.rst:81 -msgid "GDExtension" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:85 +#: ../../docs/about/docs_changelog.rst:116 msgid ":ref:`doc_gdextension_file`" msgstr "" -#: ../../docs/about/docs_changelog.rst:86 +#: ../../docs/about/docs_changelog.rst:117 msgid ":ref:`doc_godot_cpp_docs_system`" msgstr "" -#: ../../docs/about/docs_changelog.rst:89 -#: ../../docs/about/docs_changelog.rst:123 -#: ../../docs/about/docs_changelog.rst:147 -#: ../../docs/about/docs_changelog.rst:195 -msgid "Migrating" -msgstr "" - -#: ../../docs/about/docs_changelog.rst:91 +#: ../../docs/about/docs_changelog.rst:122 msgid ":ref:`doc_upgrading_to_godot_4.3`" msgstr "" -#: ../../docs/about/docs_changelog.rst:96 +#: ../../docs/about/docs_changelog.rst:127 msgid ":ref:`doc_compositor`" msgstr "" -#: ../../docs/about/docs_changelog.rst:99 -#: ../../docs/about/docs_changelog.rst:218 +#: ../../docs/about/docs_changelog.rst:130 +#: ../../docs/about/docs_changelog.rst:249 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.2.rst:216 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:198 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.5.rst:146 @@ -5332,35 +5375,35 @@ msgstr "" msgid "XR" msgstr "" -#: ../../docs/about/docs_changelog.rst:101 +#: ../../docs/about/docs_changelog.rst:132 msgid ":ref:`doc_a_better_xr_start_script`" msgstr "" -#: ../../docs/about/docs_changelog.rst:102 +#: ../../docs/about/docs_changelog.rst:133 msgid ":ref:`doc_openxr_passthrough`" msgstr "" -#: ../../docs/about/docs_changelog.rst:103 +#: ../../docs/about/docs_changelog.rst:134 msgid ":ref:`doc_xr_next_steps`" msgstr "" -#: ../../docs/about/docs_changelog.rst:104 +#: ../../docs/about/docs_changelog.rst:135 msgid ":ref:`doc_openxr_settings`" msgstr "" -#: ../../docs/about/docs_changelog.rst:105 +#: ../../docs/about/docs_changelog.rst:136 msgid ":ref:`doc_openxr_composition_layers`" msgstr "" -#: ../../docs/about/docs_changelog.rst:106 +#: ../../docs/about/docs_changelog.rst:137 msgid ":ref:`doc_openxr_body_tracking`" msgstr "" -#: ../../docs/about/docs_changelog.rst:110 +#: ../../docs/about/docs_changelog.rst:141 msgid "New pages since version 4.1" msgstr "" -#: ../../docs/about/docs_changelog.rst:113 +#: ../../docs/about/docs_changelog.rst:144 #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:22 #: ../../docs/tutorials/performance/cpu_optimization.rst:180 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:49 @@ -5391,202 +5434,202 @@ msgstr "" msgid "C#" msgstr "" -#: ../../docs/about/docs_changelog.rst:115 +#: ../../docs/about/docs_changelog.rst:146 msgid ":ref:`doc_c_sharp_diagnostics`" msgstr "" -#: ../../docs/about/docs_changelog.rst:118 -#: ../../docs/about/docs_changelog.rst:141 -#: ../../docs/about/docs_changelog.rst:190 -#: ../../docs/about/docs_changelog.rst:276 +#: ../../docs/about/docs_changelog.rst:149 +#: ../../docs/about/docs_changelog.rst:172 +#: ../../docs/about/docs_changelog.rst:221 +#: ../../docs/about/docs_changelog.rst:307 msgid "Development" msgstr "" -#: ../../docs/about/docs_changelog.rst:120 +#: ../../docs/about/docs_changelog.rst:151 msgid ":ref:`doc_2d_coordinate_systems`" msgstr "" -#: ../../docs/about/docs_changelog.rst:125 +#: ../../docs/about/docs_changelog.rst:156 msgid ":ref:`doc_upgrading_to_godot_4.2`" msgstr "" -#: ../../docs/about/docs_changelog.rst:128 +#: ../../docs/about/docs_changelog.rst:159 msgid "I/O" msgstr "" -#: ../../docs/about/docs_changelog.rst:130 +#: ../../docs/about/docs_changelog.rst:161 msgid ":ref:`doc_runtime_loading_and_saving`" msgstr "" -#: ../../docs/about/docs_changelog.rst:133 -#: ../../docs/about/docs_changelog.rst:305 -#: ../../docs/about/docs_changelog.rst:506 +#: ../../docs/about/docs_changelog.rst:164 +#: ../../docs/about/docs_changelog.rst:336 +#: ../../docs/about/docs_changelog.rst:537 #: ../../docs/tutorials/platform/index.rst:4 msgid "Platform-specific" msgstr "" -#: ../../docs/about/docs_changelog.rst:135 +#: ../../docs/about/docs_changelog.rst:166 msgid ":ref:`doc_android_library`" msgstr "" -#: ../../docs/about/docs_changelog.rst:138 +#: ../../docs/about/docs_changelog.rst:169 msgid "New pages since version 4.0" msgstr "" -#: ../../docs/about/docs_changelog.rst:143 +#: ../../docs/about/docs_changelog.rst:174 msgid ":ref:`doc_internal_rendering_architecture`" msgstr "" -#: ../../docs/about/docs_changelog.rst:144 +#: ../../docs/about/docs_changelog.rst:175 msgid ":ref:`doc_using_sanitizers`" msgstr "" -#: ../../docs/about/docs_changelog.rst:149 +#: ../../docs/about/docs_changelog.rst:180 msgid ":ref:`doc_upgrading_to_godot_4.1`" msgstr "" -#: ../../docs/about/docs_changelog.rst:154 +#: ../../docs/about/docs_changelog.rst:185 msgid ":ref:`doc_troubleshooting_physics_issues`" msgstr "" -#: ../../docs/about/docs_changelog.rst:157 +#: ../../docs/about/docs_changelog.rst:188 msgid "New pages since version 3.6" msgstr "" -#: ../../docs/about/docs_changelog.rst:162 +#: ../../docs/about/docs_changelog.rst:193 msgid ":ref:`doc_2d_antialiasing`" msgstr "" -#: ../../docs/about/docs_changelog.rst:167 +#: ../../docs/about/docs_changelog.rst:198 msgid ":ref:`doc_3d_antialiasing`" msgstr "" -#: ../../docs/about/docs_changelog.rst:168 +#: ../../docs/about/docs_changelog.rst:199 msgid ":ref:`doc_faking_global_illumination`" msgstr "" -#: ../../docs/about/docs_changelog.rst:169 +#: ../../docs/about/docs_changelog.rst:200 msgid ":ref:`doc_introduction_to_global_illumination`" msgstr "" -#: ../../docs/about/docs_changelog.rst:170 +#: ../../docs/about/docs_changelog.rst:201 msgid ":ref:`doc_mesh_lod`" msgstr "" -#: ../../docs/about/docs_changelog.rst:171 +#: ../../docs/about/docs_changelog.rst:202 msgid ":ref:`doc_occlusion_culling`" msgstr "" -#: ../../docs/about/docs_changelog.rst:172 +#: ../../docs/about/docs_changelog.rst:203 msgid ":ref:`doc_using_sdfgi`" msgstr "" -#: ../../docs/about/docs_changelog.rst:173 +#: ../../docs/about/docs_changelog.rst:204 msgid ":ref:`doc_using_decals`" msgstr "" -#: ../../docs/about/docs_changelog.rst:174 +#: ../../docs/about/docs_changelog.rst:205 msgid ":ref:`doc_visibility_ranges`" msgstr "" -#: ../../docs/about/docs_changelog.rst:175 +#: ../../docs/about/docs_changelog.rst:206 msgid ":ref:`doc_volumetric_fog`" msgstr "" -#: ../../docs/about/docs_changelog.rst:176 +#: ../../docs/about/docs_changelog.rst:207 msgid ":ref:`doc_variable_rate_shading`" msgstr "" -#: ../../docs/about/docs_changelog.rst:177 +#: ../../docs/about/docs_changelog.rst:208 msgid ":ref:`doc_physical_light_and_camera_units`" msgstr "" -#: ../../docs/about/docs_changelog.rst:182 +#: ../../docs/about/docs_changelog.rst:213 msgid ":ref:`doc_creating_movies`" msgstr "" -#: ../../docs/about/docs_changelog.rst:185 +#: ../../docs/about/docs_changelog.rst:216 #: ../../docs/tutorials/assets_pipeline/index.rst:4 msgid "Assets pipeline" msgstr "" -#: ../../docs/about/docs_changelog.rst:187 +#: ../../docs/about/docs_changelog.rst:218 msgid ":ref:`doc_retargeting_3d_skeletons`" msgstr "" -#: ../../docs/about/docs_changelog.rst:192 +#: ../../docs/about/docs_changelog.rst:223 msgid ":ref:`doc_custom_platform_ports`" msgstr "" -#: ../../docs/about/docs_changelog.rst:197 +#: ../../docs/about/docs_changelog.rst:228 msgid ":ref:`doc_upgrading_to_godot_4`" msgstr "" -#: ../../docs/about/docs_changelog.rst:202 +#: ../../docs/about/docs_changelog.rst:233 msgid ":ref:`doc_large_world_coordinates`" msgstr "" -#: ../../docs/about/docs_changelog.rst:207 +#: ../../docs/about/docs_changelog.rst:238 msgid ":ref:`doc_custom_performance_monitors`" msgstr "" -#: ../../docs/about/docs_changelog.rst:208 +#: ../../docs/about/docs_changelog.rst:239 msgid ":ref:`doc_c_sharp_collections`" msgstr "" -#: ../../docs/about/docs_changelog.rst:209 +#: ../../docs/about/docs_changelog.rst:240 msgid ":ref:`doc_c_sharp_global_classes`" msgstr "" -#: ../../docs/about/docs_changelog.rst:210 +#: ../../docs/about/docs_changelog.rst:241 msgid ":ref:`doc_c_sharp_variant`" msgstr "" -#: ../../docs/about/docs_changelog.rst:215 +#: ../../docs/about/docs_changelog.rst:246 msgid ":ref:`doc_compute_shaders`" msgstr "" -#: ../../docs/about/docs_changelog.rst:220 +#: ../../docs/about/docs_changelog.rst:251 msgid ":ref:`doc_introducing_xr_tools`" msgstr "" -#: ../../docs/about/docs_changelog.rst:221 +#: ../../docs/about/docs_changelog.rst:252 msgid ":ref:`doc_xr_action_map`" msgstr "" -#: ../../docs/about/docs_changelog.rst:222 +#: ../../docs/about/docs_changelog.rst:253 msgid ":ref:`doc_deploying_to_android`" msgstr "" -#: ../../docs/about/docs_changelog.rst:225 +#: ../../docs/about/docs_changelog.rst:256 msgid "New pages since version 3.5" msgstr "" -#: ../../docs/about/docs_changelog.rst:227 +#: ../../docs/about/docs_changelog.rst:258 msgid "None." msgstr "" -#: ../../docs/about/docs_changelog.rst:230 +#: ../../docs/about/docs_changelog.rst:261 msgid "New pages since version 3.4" msgstr "" -#: ../../docs/about/docs_changelog.rst:235 +#: ../../docs/about/docs_changelog.rst:266 msgid ":ref:`doc_3d_text`" msgstr "" -#: ../../docs/about/docs_changelog.rst:240 +#: ../../docs/about/docs_changelog.rst:271 msgid ":ref:`doc_playing_videos`" msgstr "" -#: ../../docs/about/docs_changelog.rst:245 +#: ../../docs/about/docs_changelog.rst:276 msgid ":ref:`doc_managing_editor_features`" msgstr "" -#: ../../docs/about/docs_changelog.rst:248 +#: ../../docs/about/docs_changelog.rst:279 msgid "New pages since version 3.3" msgstr "" -#: ../../docs/about/docs_changelog.rst:251 +#: ../../docs/about/docs_changelog.rst:282 #: ../../docs/getting_started/step_by_step/scripting_languages.rst:59 #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:15 #: ../../docs/tutorials/performance/cpu_optimization.rst:171 @@ -5621,504 +5664,505 @@ msgstr "" msgid "GDScript" msgstr "" -#: ../../docs/about/docs_changelog.rst:253 +#: ../../docs/about/docs_changelog.rst:284 msgid ":ref:`doc_gdscript_documentation_comments`" msgstr "" -#: ../../docs/about/docs_changelog.rst:256 +#: ../../docs/about/docs_changelog.rst:287 msgid "New pages since version 3.2" msgstr "" -#: ../../docs/about/docs_changelog.rst:261 +#: ../../docs/about/docs_changelog.rst:292 msgid ":ref:`doc_3d_rendering_limitations`" msgstr "" -#: ../../docs/about/docs_changelog.rst:266 +#: ../../docs/about/docs_changelog.rst:297 msgid ":ref:`doc_troubleshooting`" msgstr "" -#: ../../docs/about/docs_changelog.rst:267 +#: ../../docs/about/docs_changelog.rst:298 msgid ":ref:`doc_list_of_features`" msgstr "" -#: ../../docs/about/docs_changelog.rst:268 +#: ../../docs/about/docs_changelog.rst:299 msgid ":ref:`doc_release_policy`" msgstr "" -#: ../../docs/about/docs_changelog.rst:271 +#: ../../docs/about/docs_changelog.rst:302 #: ../../docs/tutorials/best_practices/index.rst:4 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:554 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:551 #: ../../docs/tutorials/assets_pipeline/importing_audio_samples.rst:275 #: ../../docs/tutorials/audio/text_to_speech.rst:94 msgid "Best practices" msgstr "" -#: ../../docs/about/docs_changelog.rst:273 +#: ../../docs/about/docs_changelog.rst:304 msgid ":ref:`doc_version_control_systems`" msgstr "" -#: ../../docs/about/docs_changelog.rst:278 +#: ../../docs/about/docs_changelog.rst:309 msgid ":ref:`doc_common_engine_methods_and_macros_error_macros`" msgstr "" -#: ../../docs/about/docs_changelog.rst:279 +#: ../../docs/about/docs_changelog.rst:310 msgid ":ref:`doc_vulkan_validation_layers`" msgstr "" -#: ../../docs/about/docs_changelog.rst:280 +#: ../../docs/about/docs_changelog.rst:311 msgid ":ref:`doc_gdscript_grammar`" msgstr "" -#: ../../docs/about/docs_changelog.rst:281 +#: ../../docs/about/docs_changelog.rst:312 msgid "Configuring an IDE: :ref:`doc_configuring_an_ide_code_blocks`" msgstr "" -#: ../../docs/about/docs_changelog.rst:286 +#: ../../docs/about/docs_changelog.rst:317 msgid ":ref:`doc_default_key_mapping`" msgstr "" -#: ../../docs/about/docs_changelog.rst:287 +#: ../../docs/about/docs_changelog.rst:318 msgid ":ref:`doc_using_the_web_editor`" msgstr "" -#: ../../docs/about/docs_changelog.rst:290 +#: ../../docs/about/docs_changelog.rst:321 #: ../../docs/tutorials/export/index.rst:6 msgid "Export" msgstr "" -#: ../../docs/about/docs_changelog.rst:292 +#: ../../docs/about/docs_changelog.rst:323 msgid ":ref:`doc_exporting_for_dedicated_servers`" msgstr "" -#: ../../docs/about/docs_changelog.rst:297 +#: ../../docs/about/docs_changelog.rst:328 msgid ":ref:`doc_controllers_gamepads_joysticks`" msgstr "" -#: ../../docs/about/docs_changelog.rst:300 -#: ../../docs/about/docs_changelog.rst:356 +#: ../../docs/about/docs_changelog.rst:331 +#: ../../docs/about/docs_changelog.rst:387 #: ../../docs/tutorials/math/index.rst:4 msgid "Math" msgstr "" -#: ../../docs/about/docs_changelog.rst:302 +#: ../../docs/about/docs_changelog.rst:333 msgid ":ref:`doc_random_number_generation`" msgstr "" -#: ../../docs/about/docs_changelog.rst:307 +#: ../../docs/about/docs_changelog.rst:338 msgid ":ref:`doc_plugins_for_ios`" msgstr "" -#: ../../docs/about/docs_changelog.rst:308 +#: ../../docs/about/docs_changelog.rst:339 msgid ":ref:`doc_ios_plugin`" msgstr "" -#: ../../docs/about/docs_changelog.rst:309 +#: ../../docs/about/docs_changelog.rst:340 msgid ":ref:`doc_html5_shell_classref`" msgstr "" -#: ../../docs/about/docs_changelog.rst:314 +#: ../../docs/about/docs_changelog.rst:345 msgid ":ref:`doc_collision_shapes_2d`" msgstr "" -#: ../../docs/about/docs_changelog.rst:315 +#: ../../docs/about/docs_changelog.rst:346 msgid ":ref:`doc_collision_shapes_3d`" msgstr "" -#: ../../docs/about/docs_changelog.rst:320 +#: ../../docs/about/docs_changelog.rst:351 msgid ":ref:`doc_shaders_style_guide`" msgstr "" -#: ../../docs/about/docs_changelog.rst:325 +#: ../../docs/about/docs_changelog.rst:356 msgid ":ref:`doc_debugger_panel`" msgstr "" -#: ../../docs/about/docs_changelog.rst:326 +#: ../../docs/about/docs_changelog.rst:357 msgid ":ref:`doc_creating_script_templates`" msgstr "" -#: ../../docs/about/docs_changelog.rst:327 +#: ../../docs/about/docs_changelog.rst:358 msgid ":ref:`doc_evaluating_expressions`" msgstr "" -#: ../../docs/about/docs_changelog.rst:328 +#: ../../docs/about/docs_changelog.rst:359 msgid ":ref:`doc_what_is_gdextension`" msgstr "" -#: ../../docs/about/docs_changelog.rst:329 +#: ../../docs/about/docs_changelog.rst:360 msgid "" ":ref:`doc_gdscript_warning_system` (split " "from :ref:`doc_gdscript_static_typing`)" msgstr "" -#: ../../docs/about/docs_changelog.rst:332 +#: ../../docs/about/docs_changelog.rst:363 msgid "User Interface (UI)" msgstr "" -#: ../../docs/about/docs_changelog.rst:334 +#: ../../docs/about/docs_changelog.rst:365 msgid ":ref:`doc_control_node_gallery`" msgstr "" -#: ../../docs/about/docs_changelog.rst:337 +#: ../../docs/about/docs_changelog.rst:368 msgid "New pages since version 3.1" msgstr "" -#: ../../docs/about/docs_changelog.rst:340 -#: ../../docs/about/docs_changelog.rst:434 +#: ../../docs/about/docs_changelog.rst:371 +#: ../../docs/about/docs_changelog.rst:465 msgid "Project workflow" msgstr "" -#: ../../docs/about/docs_changelog.rst:342 +#: ../../docs/about/docs_changelog.rst:373 msgid ":ref:`doc_android_gradle_build`" msgstr "" -#: ../../docs/about/docs_changelog.rst:347 +#: ../../docs/about/docs_changelog.rst:378 msgid ":ref:`doc_2d_sprite_animation`" msgstr "" -#: ../../docs/about/docs_changelog.rst:352 +#: ../../docs/about/docs_changelog.rst:383 msgid ":ref:`doc_recording_with_microphone`" msgstr "" -#: ../../docs/about/docs_changelog.rst:353 +#: ../../docs/about/docs_changelog.rst:384 msgid ":ref:`doc_sync_with_audio`" msgstr "" -#: ../../docs/about/docs_changelog.rst:358 +#: ../../docs/about/docs_changelog.rst:389 msgid ":ref:`doc_beziers_and_curves`" msgstr "" -#: ../../docs/about/docs_changelog.rst:359 +#: ../../docs/about/docs_changelog.rst:390 msgid ":ref:`doc_interpolation`" msgstr "" -#: ../../docs/about/docs_changelog.rst:362 +#: ../../docs/about/docs_changelog.rst:393 msgid "Inputs" msgstr "" -#: ../../docs/about/docs_changelog.rst:364 +#: ../../docs/about/docs_changelog.rst:395 msgid ":ref:`doc_input_examples`" msgstr "" -#: ../../docs/about/docs_changelog.rst:369 +#: ../../docs/about/docs_changelog.rst:400 msgid ":ref:`doc_localization_using_gettext`" msgstr "" -#: ../../docs/about/docs_changelog.rst:372 -#: ../../docs/about/docs_changelog.rst:486 -#: ../../docs/tutorials/3d/standard_material_3d.rst:245 +#: ../../docs/about/docs_changelog.rst:403 +#: ../../docs/about/docs_changelog.rst:517 +#: ../../docs/tutorials/3d/standard_material_3d.rst:255 msgid "Shading" msgstr "" -#: ../../docs/about/docs_changelog.rst:374 +#: ../../docs/about/docs_changelog.rst:405 msgid "Your First Shader Series:" msgstr "" -#: ../../docs/about/docs_changelog.rst:375 -#: ../../docs/about/docs_changelog.rst:493 +#: ../../docs/about/docs_changelog.rst:406 +#: ../../docs/about/docs_changelog.rst:524 msgid ":ref:`doc_introduction_to_shaders`" msgstr "" -#: ../../docs/about/docs_changelog.rst:376 +#: ../../docs/about/docs_changelog.rst:407 msgid ":ref:`doc_your_first_canvasitem_shader`" msgstr "" -#: ../../docs/about/docs_changelog.rst:377 +#: ../../docs/about/docs_changelog.rst:408 msgid ":ref:`doc_your_first_spatial_shader`" msgstr "" -#: ../../docs/about/docs_changelog.rst:378 +#: ../../docs/about/docs_changelog.rst:409 msgid ":ref:`doc_your_second_spatial_shader`" msgstr "" -#: ../../docs/about/docs_changelog.rst:379 +#: ../../docs/about/docs_changelog.rst:410 msgid ":ref:`doc_visual_shaders`" msgstr "" -#: ../../docs/about/docs_changelog.rst:384 +#: ../../docs/about/docs_changelog.rst:415 msgid ":ref:`doc_webrtc`" msgstr "" -#: ../../docs/about/docs_changelog.rst:387 -#: ../../docs/about/docs_changelog.rst:500 +#: ../../docs/about/docs_changelog.rst:418 +#: ../../docs/about/docs_changelog.rst:531 #: ../../docs/tutorials/plugins/index.rst:4 msgid "Plugins" msgstr "" -#: ../../docs/about/docs_changelog.rst:389 +#: ../../docs/about/docs_changelog.rst:420 msgid ":ref:`doc_android_plugin`" msgstr "" -#: ../../docs/about/docs_changelog.rst:390 +#: ../../docs/about/docs_changelog.rst:421 msgid ":ref:`doc_inspector_plugins`" msgstr "" -#: ../../docs/about/docs_changelog.rst:391 +#: ../../docs/about/docs_changelog.rst:422 msgid ":ref:`doc_visual_shader_plugins`" msgstr "" -#: ../../docs/about/docs_changelog.rst:394 -#: ../../docs/about/docs_changelog.rst:511 +#: ../../docs/about/docs_changelog.rst:425 +#: ../../docs/about/docs_changelog.rst:542 msgid "Multi-threading" msgstr "" -#: ../../docs/about/docs_changelog.rst:396 +#: ../../docs/about/docs_changelog.rst:427 msgid ":ref:`doc_using_multiple_threads`" msgstr "" -#: ../../docs/about/docs_changelog.rst:399 -#: ../../docs/about/docs_changelog.rst:516 +#: ../../docs/about/docs_changelog.rst:430 +#: ../../docs/about/docs_changelog.rst:547 msgid "Creating content" msgstr "" -#: ../../docs/about/docs_changelog.rst:401 +#: ../../docs/about/docs_changelog.rst:432 msgid "Procedural geometry series:" msgstr "" -#: ../../docs/about/docs_changelog.rst:402 +#: ../../docs/about/docs_changelog.rst:433 msgid ":ref:`Procedural geometry `" msgstr "" -#: ../../docs/about/docs_changelog.rst:403 +#: ../../docs/about/docs_changelog.rst:434 msgid ":ref:`doc_arraymesh`" msgstr "" -#: ../../docs/about/docs_changelog.rst:404 +#: ../../docs/about/docs_changelog.rst:435 msgid ":ref:`doc_surfacetool`" msgstr "" -#: ../../docs/about/docs_changelog.rst:405 +#: ../../docs/about/docs_changelog.rst:436 msgid ":ref:`doc_meshdatatool`" msgstr "" -#: ../../docs/about/docs_changelog.rst:406 +#: ../../docs/about/docs_changelog.rst:437 msgid ":ref:`doc_immediatemesh`" msgstr "" -#: ../../docs/about/docs_changelog.rst:409 ../../docs/tutorials/3d/index.rst:37 +#: ../../docs/about/docs_changelog.rst:440 ../../docs/tutorials/3d/index.rst:37 msgid "Optimization" msgstr "" -#: ../../docs/about/docs_changelog.rst:411 +#: ../../docs/about/docs_changelog.rst:442 msgid ":ref:`doc_using_multimesh`" msgstr "" -#: ../../docs/about/docs_changelog.rst:412 +#: ../../docs/about/docs_changelog.rst:443 msgid ":ref:`doc_using_servers`" msgstr "" -#: ../../docs/about/docs_changelog.rst:415 +#: ../../docs/about/docs_changelog.rst:446 msgid "Legal" msgstr "" -#: ../../docs/about/docs_changelog.rst:417 +#: ../../docs/about/docs_changelog.rst:448 msgid ":ref:`doc_complying_with_licenses`" msgstr "" -#: ../../docs/about/docs_changelog.rst:420 +#: ../../docs/about/docs_changelog.rst:451 msgid "New pages since version 3.0" msgstr "" -#: ../../docs/about/docs_changelog.rst:423 +#: ../../docs/about/docs_changelog.rst:454 #: ../../docs/getting_started/step_by_step/index.rst:6 #: ../../docs/engine_details/development/compiling/compiling_with_script_encryption_key.rst:26 msgid "Step by step" msgstr "" -#: ../../docs/about/docs_changelog.rst:425 +#: ../../docs/about/docs_changelog.rst:456 msgid ":ref:`doc_signals`" msgstr "" -#: ../../docs/about/docs_changelog.rst:426 +#: ../../docs/about/docs_changelog.rst:457 #: ../../docs/tutorials/editor/command_line_tutorial.rst:443 msgid "Exporting" msgstr "" -#: ../../docs/about/docs_changelog.rst:431 +#: ../../docs/about/docs_changelog.rst:462 msgid ":ref:`doc_gdscript_static_typing`" msgstr "" -#: ../../docs/about/docs_changelog.rst:436 +#: ../../docs/about/docs_changelog.rst:467 msgid "Best Practices:" msgstr "" -#: ../../docs/about/docs_changelog.rst:438 +#: ../../docs/about/docs_changelog.rst:469 msgid ":ref:`doc_introduction_best_practices`" msgstr "" -#: ../../docs/about/docs_changelog.rst:439 +#: ../../docs/about/docs_changelog.rst:470 msgid ":ref:`doc_what_are_godot_classes`" msgstr "" -#: ../../docs/about/docs_changelog.rst:440 +#: ../../docs/about/docs_changelog.rst:471 msgid ":ref:`doc_scene_organization`" msgstr "" -#: ../../docs/about/docs_changelog.rst:441 +#: ../../docs/about/docs_changelog.rst:472 msgid ":ref:`doc_scenes_versus_scripts`" msgstr "" -#: ../../docs/about/docs_changelog.rst:442 +#: ../../docs/about/docs_changelog.rst:473 msgid ":ref:`doc_autoloads_versus_internal_nodes`" msgstr "" -#: ../../docs/about/docs_changelog.rst:443 +#: ../../docs/about/docs_changelog.rst:474 msgid ":ref:`doc_node_alternatives`" msgstr "" -#: ../../docs/about/docs_changelog.rst:444 +#: ../../docs/about/docs_changelog.rst:475 msgid ":ref:`doc_godot_interfaces`" msgstr "" -#: ../../docs/about/docs_changelog.rst:445 +#: ../../docs/about/docs_changelog.rst:476 msgid ":ref:`doc_godot_notifications`" msgstr "" -#: ../../docs/about/docs_changelog.rst:446 +#: ../../docs/about/docs_changelog.rst:477 msgid ":ref:`doc_data_preferences`" msgstr "" -#: ../../docs/about/docs_changelog.rst:447 +#: ../../docs/about/docs_changelog.rst:478 msgid ":ref:`doc_logic_preferences`" msgstr "" -#: ../../docs/about/docs_changelog.rst:452 +#: ../../docs/about/docs_changelog.rst:483 msgid ":ref:`doc_2d_lights_and_shadows`" msgstr "" -#: ../../docs/about/docs_changelog.rst:453 +#: ../../docs/about/docs_changelog.rst:484 msgid ":ref:`doc_2d_meshes`" msgstr "" -#: ../../docs/about/docs_changelog.rst:458 +#: ../../docs/about/docs_changelog.rst:489 msgid ":ref:`doc_csg_tools`" msgstr "" -#: ../../docs/about/docs_changelog.rst:459 +#: ../../docs/about/docs_changelog.rst:490 msgid ":ref:`doc_animating_thousands_of_fish`" msgstr "" -#: ../../docs/about/docs_changelog.rst:460 +#: ../../docs/about/docs_changelog.rst:491 msgid ":ref:`doc_controlling_thousands_of_fish`" msgstr "" -#: ../../docs/about/docs_changelog.rst:465 +#: ../../docs/about/docs_changelog.rst:496 msgid ":ref:`doc_ragdoll_system`" msgstr "" -#: ../../docs/about/docs_changelog.rst:466 +#: ../../docs/about/docs_changelog.rst:497 msgid ":ref:`doc_soft_body`" msgstr "" -#: ../../docs/about/docs_changelog.rst:471 +#: ../../docs/about/docs_changelog.rst:502 msgid ":ref:`doc_2d_skeletons`" msgstr "" -#: ../../docs/about/docs_changelog.rst:472 +#: ../../docs/about/docs_changelog.rst:503 msgid ":ref:`doc_animation_tree`" msgstr "" -#: ../../docs/about/docs_changelog.rst:475 +#: ../../docs/about/docs_changelog.rst:506 msgid "GUI" msgstr "" -#: ../../docs/about/docs_changelog.rst:477 +#: ../../docs/about/docs_changelog.rst:508 msgid ":ref:`doc_gui_containers`" msgstr "" -#: ../../docs/about/docs_changelog.rst:480 +#: ../../docs/about/docs_changelog.rst:511 msgid "Viewports" msgstr "" -#: ../../docs/about/docs_changelog.rst:482 +#: ../../docs/about/docs_changelog.rst:513 msgid ":ref:`doc_viewport_as_texture`" msgstr "" -#: ../../docs/about/docs_changelog.rst:483 +#: ../../docs/about/docs_changelog.rst:514 msgid ":ref:`doc_custom_postprocessing`" msgstr "" -#: ../../docs/about/docs_changelog.rst:488 +#: ../../docs/about/docs_changelog.rst:519 msgid ":ref:`doc_converting_glsl_to_godot_shaders`" msgstr "" -#: ../../docs/about/docs_changelog.rst:489 +#: ../../docs/about/docs_changelog.rst:520 msgid ":ref:`doc_advanced_postprocessing`" msgstr "" -#: ../../docs/about/docs_changelog.rst:491 +#: ../../docs/about/docs_changelog.rst:522 msgid "Shading Reference:" msgstr "" -#: ../../docs/about/docs_changelog.rst:494 +#: ../../docs/about/docs_changelog.rst:525 msgid ":ref:`doc_shading_language`" msgstr "" -#: ../../docs/about/docs_changelog.rst:495 +#: ../../docs/about/docs_changelog.rst:526 msgid ":ref:`doc_spatial_shader`" msgstr "" -#: ../../docs/about/docs_changelog.rst:496 +#: ../../docs/about/docs_changelog.rst:527 msgid ":ref:`doc_canvas_item_shader`" msgstr "" -#: ../../docs/about/docs_changelog.rst:497 +#: ../../docs/about/docs_changelog.rst:528 msgid ":ref:`doc_particle_shader`" msgstr "" -#: ../../docs/about/docs_changelog.rst:502 +#: ../../docs/about/docs_changelog.rst:533 msgid ":ref:`doc_making_main_screen_plugins`" msgstr "" -#: ../../docs/about/docs_changelog.rst:503 +#: ../../docs/about/docs_changelog.rst:534 msgid ":ref:`doc_3d_gizmo_plugins`" msgstr "" -#: ../../docs/about/docs_changelog.rst:508 +#: ../../docs/about/docs_changelog.rst:539 msgid ":ref:`doc_customizing_html5_shell`" msgstr "" -#: ../../docs/about/docs_changelog.rst:513 +#: ../../docs/about/docs_changelog.rst:544 msgid ":ref:`doc_thread_safe_apis`" msgstr "" -#: ../../docs/about/docs_changelog.rst:518 +#: ../../docs/about/docs_changelog.rst:549 msgid ":ref:`doc_making_trees`" msgstr "" -#: ../../docs/about/docs_changelog.rst:523 +#: ../../docs/about/docs_changelog.rst:554 msgid ":ref:`doc_jitter_stutter`" msgstr "" -#: ../../docs/about/docs_changelog.rst:524 +#: ../../docs/about/docs_changelog.rst:555 msgid ":ref:`doc_running_code_in_the_editor`" msgstr "" -#: ../../docs/about/docs_changelog.rst:525 +#: ../../docs/about/docs_changelog.rst:556 msgid ":ref:`doc_change_scenes_manually`" msgstr "" -#: ../../docs/about/docs_changelog.rst:528 -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:115 +#: ../../docs/about/docs_changelog.rst:559 +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:203 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:116 #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:248 #: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:52 #: ../../docs/engine_details/development/compiling/compiling_for_ios.rst:51 msgid "Compiling" msgstr "" -#: ../../docs/about/docs_changelog.rst:530 +#: ../../docs/about/docs_changelog.rst:561 msgid ":ref:`doc_optimizing_for_size`" msgstr "" -#: ../../docs/about/docs_changelog.rst:531 +#: ../../docs/about/docs_changelog.rst:562 msgid ":ref:`doc_compiling_with_script_encryption_key`" msgstr "" -#: ../../docs/about/docs_changelog.rst:534 +#: ../../docs/about/docs_changelog.rst:565 #: ../../docs/engine_details/development/index.rst:6 msgid "Engine development" msgstr "" -#: ../../docs/about/docs_changelog.rst:536 +#: ../../docs/about/docs_changelog.rst:567 msgid ":ref:`doc_binding_to_external_libraries`" msgstr "" @@ -6294,26 +6338,20 @@ msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:114 msgid "" -"If you are entirely new to programming, we recommend following the `CS50 " -"open courseware`_ from Harvard University. It's a great free course that " -"will teach you everything you need to know to be off to a good start. It " -"will save you countless hours and hurdles learning any game engine afterward." +"If you are entirely new to programming, GDQuest's *Learn GDScript From Zero* " +"is a free and open source interactive tutorial for absolute beginners to " +"learn to program with Godot's GDScript language. It is available as a " +"`desktop application `__ or " +"`in the browser `__." msgstr "" -#: ../../docs/getting_started/introduction/introduction_to_godot.rst:119 -msgid "" -"In CS50, you will learn multiple programming languages. Don't be afraid of " -"that: programming languages have many similarities. The skills you learn " -"with one language transfer well to others." -msgstr "" - -#: ../../docs/getting_started/introduction/introduction_to_godot.rst:123 +#: ../../docs/getting_started/introduction/introduction_to_godot.rst:120 msgid "" "We will provide you with more Godot-specific learning resources " "in :ref:`doc_learning_new_features`." msgstr "" -#: ../../docs/getting_started/introduction/introduction_to_godot.rst:126 +#: ../../docs/getting_started/introduction/introduction_to_godot.rst:123 #: ../../docs/getting_started/introduction/learn_to_code_with_gdscript.rst:33 msgid "" "In the next part, you will get an overview of the engine's essential " @@ -6414,6 +6452,7 @@ msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:33 #: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:254 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:306 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:160 #: ../../docs/engine_details/file_formats/tscn.rst:47 msgid "Nodes" msgstr "" @@ -6466,12 +6505,12 @@ msgid "" msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:75 -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2639 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2660 #: ../../docs/tutorials/scripting/gdscript/gdscript_styleguide.rst:659 #: ../../docs/tutorials/scripting/gdscript/gdscript_styleguide.rst:724 -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:613 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:545 #: ../../docs/tutorials/scripting/how_to_read_the_godot_api.rst:103 -#: ../../docs/engine_details/architecture/object_class.rst:223 +#: ../../docs/engine_details/architecture/object_class.rst:220 msgid "Signals" msgstr "" @@ -6511,7 +6550,7 @@ msgstr "" #: ../../docs/tutorials/2d/2d_movement.rst:312 #: ../../docs/tutorials/3d/global_illumination/introduction_to_global_illumination.rst:328 #: ../../docs/tutorials/export/exporting_pcks.rst:171 -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:670 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:671 msgid "Summary" msgstr "" @@ -6912,25 +6951,24 @@ msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:69 msgid "" -"Harvard university offers a free courseware to learn to program, `CS50 " -"`_. It will teach you programming fundamentals, " -"how code works, and how to think like a programmer. These skills are " -"essential to become a game developer and learn any game engine efficiently. " -"You can see this course as an investment that will save you time and trouble " -"when you learn to create games." +"GDQuest's *Learn GDScript From Zero* is a free and open source interactive " +"tutorial for absolute beginners to learn to program with Godot's GDScript " +"language. It is available as a `desktop application `__ or `in the browser `__." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:76 +#: ../../docs/getting_started/introduction/learning_new_features.rst:75 msgid "" "If you prefer books, check out the free ebook `Automate The Boring Stuff " "With Python `_ by Al Sweigart." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:80 +#: ../../docs/getting_started/introduction/learning_new_features.rst:79 msgid "Learning with the community" msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:82 +#: ../../docs/getting_started/introduction/learning_new_features.rst:81 msgid "" "Godot has a growing community of users. If you're stuck on a problem or need " "help to better understand how to achieve something, you can ask other users " @@ -6938,7 +6976,7 @@ msgid "" "community>`_." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:87 +#: ../../docs/getting_started/introduction/learning_new_features.rst:86 msgid "" "The best place to ask questions and find already answered ones is the " "official `Godot Forum `_. These responses " @@ -6949,14 +6987,14 @@ msgid "" "on this website or using your preferred search engine." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:95 +#: ../../docs/getting_started/introduction/learning_new_features.rst:94 msgid "" "Asking questions well and providing details will help others answer you " "faster and better. When asking questions, we recommend including the " "following information:" msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:99 +#: ../../docs/getting_started/introduction/learning_new_features.rst:98 msgid "" "**Describe your goal**. You want to explain what you are trying to achieve " "design-wise. If you are having trouble figuring out how to make a solution " @@ -6964,7 +7002,7 @@ msgid "" "goal." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:104 +#: ../../docs/getting_started/introduction/learning_new_features.rst:103 msgid "" "If there is an error involved, **share the exact error message**. You can " "copy the exact error message in the editor's Debugger bottom panel by " @@ -6972,7 +7010,7 @@ msgid "" "members better identify how you triggered the error." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:109 +#: ../../docs/getting_started/introduction/learning_new_features.rst:108 msgid "" "If there is code involved, **share a code sample**. Other users won't be " "able to help you fix a problem without seeing your code. Share the code as " @@ -6981,14 +7019,14 @@ msgid "" "long files." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:115 +#: ../../docs/getting_started/introduction/learning_new_features.rst:114 msgid "" "**Share a screenshot** of your *Scene* dock along with your written code. " "Most of the code you write affects nodes in your scenes. As a result, you " "should think of those scenes as part of your source code." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:121 +#: ../../docs/getting_started/introduction/learning_new_features.rst:120 msgid "" "Also, please don't take a picture with your phone, the low quality and " "screen reflections can make it hard to understand the image. Your operating " @@ -6998,13 +7036,13 @@ msgid "" "a-screenshot-mh26782/mac>`_)." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:127 +#: ../../docs/getting_started/introduction/learning_new_features.rst:126 msgid "" "Alternatively, you can use a program like `ShareX `_ " "on Windows, or `Flameshot `_ on Windows/macOS/Linux." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:130 +#: ../../docs/getting_started/introduction/learning_new_features.rst:129 msgid "" "Sharing a video of your running game can also be really **useful to " "troubleshoot your game**. You can use programs like `OBS Studio `_ or a " "cloud provider to upload and share your videos for free." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:138 +#: ../../docs/getting_started/introduction/learning_new_features.rst:137 msgid "" "If you're not using the stable version of Godot, please mention the version " "you're using. The answer can be different as available features and the " "interface evolve rapidly." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:142 +#: ../../docs/getting_started/introduction/learning_new_features.rst:141 msgid "" "Following these guidelines will maximize your chances of getting the answer " "you're looking for. They will save time both for you and the persons helping " "you." msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:146 +#: ../../docs/getting_started/introduction/learning_new_features.rst:145 msgid "Community tutorials" msgstr "" -#: ../../docs/getting_started/introduction/learning_new_features.rst:148 +#: ../../docs/getting_started/introduction/learning_new_features.rst:147 msgid "" "This manual aims to provide a comprehensive reference of Godot's features. " "Aside from the 2D and 3D getting started series, it does not contain " @@ -7133,8 +7171,8 @@ msgid "|image0|" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:174 -#: ../../docs/getting_started/first_2d_game/index.rst:79 -#: ../../docs/getting_started/first_3d_game/index.rst:72 +#: ../../docs/getting_started/first_2d_game/index.rst:80 +#: ../../docs/getting_started/first_3d_game/index.rst:74 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:451 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:334 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:346 @@ -9349,47 +9387,53 @@ msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:45 msgid "" -"https://github.com/godotengine/godot-demo-projects/tree/master/2d/" -"dodge_the_creeps" +"`Dodge the Creeps source code (GDScript) `__" msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:48 +#: ../../docs/getting_started/first_2d_game/index.rst:46 +msgid "" +"`Dodge the Creeps source code (C#) `__" +msgstr "" + +#: ../../docs/getting_started/first_2d_game/index.rst:49 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:34 msgid "Prerequisites" msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:50 +#: ../../docs/getting_started/first_2d_game/index.rst:51 msgid "" "This step-by-step tutorial is intended for beginners who followed the " "complete :ref:`doc_step_by_step`." msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:53 +#: ../../docs/getting_started/first_2d_game/index.rst:54 msgid "" "If you're an experienced programmer, you can find the complete demo's source " "code here: `Dodge the Creeps source code `__." msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:57 +#: ../../docs/getting_started/first_2d_game/index.rst:58 msgid "" "We prepared some game assets you'll need to download so we can jump straight " "to the code." msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:60 +#: ../../docs/getting_started/first_2d_game/index.rst:61 msgid "You can download them by clicking the link below." msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:62 +#: ../../docs/getting_started/first_2d_game/index.rst:63 msgid "" "`dodge_the_creeps_2d_assets.zip `_." msgstr "" -#: ../../docs/getting_started/first_2d_game/index.rst:65 -#: ../../docs/getting_started/first_3d_game/index.rst:55 +#: ../../docs/getting_started/first_2d_game/index.rst:66 +#: ../../docs/getting_started/first_3d_game/index.rst:57 msgid "Contents" msgstr "" @@ -10989,12 +11033,22 @@ msgid "" "This tutorial is for beginners who followed the complete getting started " "series. We'll start slow with detailed instructions and shorten them as we " "do similar steps. If you're an experienced programmer, you can browse the " -"complete demo's source code here: `Squash the Creep source code `__." +"complete demo's source code here:" msgstr "" -#: ../../docs/getting_started/first_3d_game/index.rst:40 +#: ../../docs/getting_started/first_3d_game/index.rst:37 +msgid "" +"`Squash the Creeps source code (GDScript) `__" +msgstr "" + +#: ../../docs/getting_started/first_3d_game/index.rst:38 +msgid "" +"`Squash the Creeps source code (C#) `__" +msgstr "" + +#: ../../docs/getting_started/first_3d_game/index.rst:42 msgid "" "You can follow this series without having done the 2D one. However, if " "you're new to game development, we recommend you to start with 2D. 3D game " @@ -11002,7 +11056,7 @@ msgid "" "follow along more comfortably." msgstr "" -#: ../../docs/getting_started/first_3d_game/index.rst:45 +#: ../../docs/getting_started/first_3d_game/index.rst:47 msgid "" "We prepared some game assets so we can jump straight to the code. You can " "download them here: `Squash the Creeps assets `__." msgstr "" -#: ../../docs/getting_started/first_3d_game/index.rst:49 +#: ../../docs/getting_started/first_3d_game/index.rst:51 msgid "" "We will first work on a basic prototype for the player's movement. We will " "then add the monsters that we'll spawn randomly around the screen. After " @@ -11833,8 +11887,8 @@ msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:417 msgid "" -"You can run the scene by pressing :kbd:`F6` and press the arrow keys to move " -"the character." +"You can run the scene by pressing :kbd:`F6` (:kbd:`Cmd + R` on macOS) and " +"press the arrow keys to move the character." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:420 @@ -12614,8 +12668,8 @@ msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:338 msgid "" -"You can test the scene by pressing :kbd:`F6`. You should see the monsters " -"spawn and move in a straight line." +"You can test the scene by pressing :kbd:`F6` (:kbd:`Cmd + R` on macOS). You " +"should see the monsters spawn and move in a straight line." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:341 @@ -14893,7 +14947,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:195 -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2137 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2144 #: ../../docs/tutorials/shaders/your_first_shader/your_first_2d_shader.rst:256 msgid "Conclusion" msgstr "" @@ -16197,70 +16251,69 @@ msgstr "" msgid "" "Preloading allows the script to handle all the loading the moment one loads " "the script. Preloading is useful, but there are also times when one doesn't " -"wish for it. To distinguish these situations, there are a few things one can " -"consider:" +"wish to use it. Here are a few considerations when determining which to use:" msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:127 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:126 msgid "" "If one cannot determine when the script might load, then preloading a " -"resource, especially a scene or script, could result in further loads one " +"resource (especially a scene or script) could result in additional loads one " "does not expect. This could lead to unintentional, variable-length load " "times on top of the original script's load operations." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:132 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:131 msgid "" "If something else could replace the value (like a scene's exported " "initialization), then preloading the value has no meaning. This point isn't " "a significant factor if one intends to always create the script on its own." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:136 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:135 msgid "" "If one wishes only to 'import' another class resource (script or scene), " "then using a preloaded constant is often the best course of action. However, " "in exceptional cases, one may wish not to do this:" msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:140 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:139 msgid "" "If the 'imported' class is liable to change, then it should be a property " "instead, initialized either using an ``@export`` or a ``load()`` (and " "perhaps not even initialized until later)." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:144 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:143 msgid "" "If the script requires a great many dependencies, and one does not wish to " -"consume so much memory, then one may wish to, load and unload various " +"consume so much memory, then one may wish to load and unload various " "dependencies at runtime as circumstances change. If one preloads resources " "into constants, then the only way to unload these resources would be to " -"unload the entire script. If they are instead loaded properties, then one " -"can set them to ``null`` and remove all references to the resource entirely " -"(which, as a :ref:`RefCounted `-extending type, will cause " -"the resources to delete themselves from memory)." +"unload the entire script. If they are instead loaded as properties, then one " +"can set these properties to ``null`` and remove all references to the " +"resource (which, as a :ref:`RefCounted `-extending type, " +"will cause the resources to delete themselves from memory)." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:155 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:154 msgid "Large levels: static vs. dynamic" msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:157 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:156 msgid "" "If one is creating a large level, which circumstances are most appropriate? " -"Should they create the level as one static space? Or should they load the " -"level in pieces and shift the world's content as needed?" +"Is it better to create the level as one static space? Or is it better to " +"load the level in pieces and shift the world's content as needed?" msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:161 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:160 msgid "" "Well, the simple answer is, \"when the performance requires it.\" The " "dilemma associated with the two options is one of the age-old programming " "choices: does one optimize memory over speed, or vice versa?" msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:165 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:164 msgid "" "The naive answer is to use a static level that loads everything at once. " "But, depending on the project, this could consume a large amount of memory. " @@ -16268,7 +16321,7 @@ msgid "" "everything else the computer tries to do at the same time." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:170 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:169 msgid "" "No matter what, one should break larger scenes into smaller ones (to aid in " "reusability of assets). Developers can then design a node that manages the " @@ -16277,38 +16330,38 @@ msgid "" "often implement these strategies to avoid wasting memory." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:176 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:175 msgid "" -"On the flip side, coding a dynamic system is more complex, i.e. uses more " -"programmed logic, which results in opportunities for errors and bugs. If one " +"On the flip side, coding a dynamic system is more complex; it uses more " +"programmed logic which results in opportunities for errors and bugs. If one " "isn't careful, they can develop a system that bloats the technical debt of " "the application." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:181 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:180 msgid "As such, the best options would be..." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:183 -msgid "To use a static level for smaller games." +#: ../../docs/tutorials/best_practices/logic_preferences.rst:182 +msgid "Use static levels for smaller games." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:185 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:184 msgid "" "If one has the time/resources on a medium/large game, create a library or " -"plugin that can code the management of nodes and resources. If refined over " -"time, so as to improve usability and stability, then it could evolve into a " +"plugin that can manage nodes and resources with code. If refined over time " +"so as to improve usability and stability, then it could evolve into a " "reliable tool across projects." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:190 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:189 msgid "" -"Code the dynamic logic for a medium/large game because one has the coding " -"skills, but not the time or resources to refine the code (game's gotta get " -"done). Could potentially refactor later to outsource the code into a plugin." +"Use dynamic logic for a medium/large game because one has the coding skills, " +"but not the time or resources to refine the code (game's gotta get done). " +"Could potentially refactor later to outsource the code into a plugin." msgstr "" -#: ../../docs/tutorials/best_practices/logic_preferences.rst:195 +#: ../../docs/tutorials/best_practices/logic_preferences.rst:194 msgid "" "For an example of the various ways one can swap scenes around at runtime, " "please see the :ref:`\"Change scenes manually\" " @@ -16502,8 +16555,8 @@ msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:18 msgid "" -"As of July 2023, there is only a Git plugin available, but the community may " -"create additional VCS plugins." +"As of October 2025, there is only a Git plugin available, but the community " +"may create additional VCS plugins." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:22 @@ -16543,7 +16596,7 @@ msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:44 msgid "" -"If you are using Godot 3, check the ``3.5`` version of this documentation " +"If you are using Godot 3, check the ``3.6`` version of this documentation " "page instead." msgstr "" @@ -16691,7 +16744,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:4 -#: ../../docs/tutorials/3d/particles/collision.rst:176 +#: ../../docs/tutorials/3d/particles/collision.rst:170 #: ../../docs/tutorials/3d/occlusion_culling.rst:272 #: ../../docs/tutorials/3d/resolution_scaling.rst:269 #: ../../docs/tutorials/audio/text_to_speech.rst:86 @@ -16699,11 +16752,11 @@ msgstr "" #: ../../docs/tutorials/export/exporting_for_ios.rst:152 #: ../../docs/tutorials/export/exporting_for_web.rst:459 #: ../../docs/tutorials/export/one-click_deploy.rst:100 -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:288 -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:358 -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:440 -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:258 -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:265 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:284 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:403 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:485 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:310 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:249 #: ../../docs/engine_details/development/compiling/compiling_for_ios.rst:96 #: ../../docs/engine_details/development/compiling/compiling_with_script_encryption_key.rst:77 #: ../../docs/engine_details/editor/creating_icons.rst:82 @@ -16820,11 +16873,11 @@ msgstr "" #: ../../docs/tutorials/troubleshooting.rst:63 msgid "" -"When using one of the Vulkan-based renderers (Forward+ or Mobile), the first " -"startup is expected to be relatively long. This is because shaders need to " -"be compiled before they can be cached. Shaders also need to be cached again " -"after updating Godot, after updating graphics drivers or after switching " -"graphics cards." +"When using one of the RenderingDevice-based renderers (Forward+ or Mobile), " +"the first startup is expected to be relatively long. This is because shaders " +"need to be compiled before they can be cached. Shaders also need to be " +"cached again after updating Godot, after updating graphics drivers or after " +"switching graphics cards." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:69 @@ -17572,6 +17625,7 @@ msgstr "" #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0303.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0401.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0402.rst:8 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:33 msgid "Usage" msgstr "" @@ -18830,7 +18884,7 @@ msgid "Editor setting" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:34 -msgid "Open 2D Editor" +msgid "Open 2D Workspace" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:34 @@ -18846,7 +18900,7 @@ msgid "``editor/editor_2d``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:36 -msgid "Open 3D Editor" +msgid "Open 3D Workspace" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:36 @@ -18903,7 +18957,8 @@ msgid ":kbd:`Ctrl + Shift + F11`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:42 -msgid ":kbd:`Cmd + Ctrl + D`" +#: ../../docs/tutorials/editor/default_key_mapping.rst:486 +msgid ":kbd:`Cmd + Shift + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:42 @@ -21322,10 +21377,6 @@ msgstr "" msgid "Duplicate Transposed" msgstr "" -#: ../../docs/tutorials/editor/default_key_mapping.rst:486 -msgid ":kbd:`Cmd + Shift + D`" -msgstr "" - #: ../../docs/tutorials/editor/default_key_mapping.rst:486 msgid "``animation_editor/duplicate_selection_transposed``" msgstr "" @@ -22258,7 +22309,6 @@ msgid "No support for external script editors." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:90 -#: ../../docs/tutorials/editor/using_the_android_editor.rst:75 msgid "" "While available, the *Vulkan Forward+* renderer is not recommended due to " "severe performance issues." @@ -22372,6 +22422,12 @@ msgid "" "GDExtensions plugins are supported." msgstr "" +#: ../../docs/tutorials/editor/using_the_android_editor.rst:75 +msgid "" +"While available, the Forward+ renderer is not recommended due to severe " +"performance issues." +msgstr "" + #: ../../docs/tutorials/editor/using_the_android_editor.rst:76 msgid "UX not optimized for Android phones form-factor." msgstr "" @@ -22766,19 +22822,20 @@ msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_documentation_comments.rst:35 #: ../../docs/tutorials/scripting/gdscript/gdscript_documentation_comments.rst:94 #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:18 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:85 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:108 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:121 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:89 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:112 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:125 #: ../../docs/tutorials/scripting/how_to_read_the_godot_api.rst:34 #: ../../docs/tutorials/scripting/creating_script_templates.rst:202 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:25 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:810 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:868 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:16 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:110 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:178 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:288 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:478 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:818 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:876 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:17 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:128 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:168 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:236 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:359 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:549 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:17 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:58 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:108 @@ -22794,8 +22851,8 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:130 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:155 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:200 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:35 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:64 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:34 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:63 #: ../../docs/tutorials/shaders/visual_shaders.rst:133 #: ../../docs/tutorials/shaders/converting_glsl_to_godot_shaders.rst:91 #: ../../docs/tutorials/shaders/converting_glsl_to_godot_shaders.rst:164 @@ -22804,6 +22861,11 @@ msgstr "" #: ../../docs/tutorials/xr/xr_action_map.rst:139 #: ../../docs/tutorials/xr/xr_action_map.rst:228 #: ../../docs/tutorials/xr/openxr_render_models.rst:238 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:37 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:968 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1119 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1284 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1617 #: ../../docs/engine_details/architecture/unit_testing.rst:297 msgid "Description" msgstr "" @@ -22961,7 +23023,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:89 -msgid "``scene ``" +msgid "``--scene ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:89 @@ -24042,8 +24104,8 @@ msgid "``{file}:{line}``" msgstr "" #: ../../docs/tutorials/editor/external_editor.rst:49 -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:74 -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:79 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:75 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:80 #: ../../docs/engine_details/development/configuring_an_ide/rider.rst:4 msgid "JetBrains Rider" msgstr "" @@ -24054,8 +24116,8 @@ msgstr "" #: ../../docs/tutorials/editor/external_editor.rst:51 #: ../../docs/tutorials/editor/external_editor.rst:109 -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:71 -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:94 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:72 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:95 #: ../../docs/engine_details/development/configuring_an_ide/visual_studio_code.rst:4 msgid "Visual Studio Code" msgstr "" @@ -24082,7 +24144,7 @@ msgid "``emacs +{line}:{col} {file}``" msgstr "" #: ../../docs/tutorials/editor/external_editor.rst:57 -msgid "Sublime Text" +msgid "Sublime Text/Zed" msgstr "" #: ../../docs/tutorials/editor/external_editor.rst:57 @@ -24094,7 +24156,7 @@ msgid "Visual Studio*" msgstr "" #: ../../docs/tutorials/editor/external_editor.rst:59 -msgid "``/edit \"file\"``" +msgid "``/edit \"{file}\"``" msgstr "" #: ../../docs/tutorials/editor/external_editor.rst:62 @@ -25055,7 +25117,7 @@ msgid "PlaneShape" msgstr "" #: ../../docs/tutorials/migrating/upgrading_to_godot_4.rst:272 -#: ../../docs/tutorials/physics/using_jolt_physics.rst:193 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:188 msgid "WorldBoundaryShape3D" msgstr "" @@ -26226,7 +26288,8 @@ msgstr "" #: ../../docs/tutorials/migrating/upgrading_to_godot_4.rst:683 #: ../../docs/tutorials/3d/variable_rate_shading.rst:134 #: ../../docs/tutorials/physics/large_world_coordinates.rst:57 -#: ../../docs/engine_details/architecture/core_types.rst:142 +#: ../../docs/engine_details/architecture/core_types.rst:61 +#: ../../docs/engine_details/architecture/core_types.rst:185 msgid "Comment" msgstr "" @@ -26798,7 +26861,7 @@ msgid "Introduced" msgstr "" #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:36 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1200 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1241 msgid "**Basis**" msgstr "" @@ -30399,7 +30462,7 @@ msgid "" "including external resources. If you were deep-duplicating a resource that " "contained references to other external resources, those external resources " "aren't duplicated anymore. You must " -"call :ref:`Resource.duplicate_deep(RESOURCE_DEEP_DUPLICATE_ALL) " +"call :ref:`Resource.duplicate_deep(DEEP_DUPLICATE_ALL) " "` instead to keep the old behavior." msgstr "" @@ -31530,17 +31593,16 @@ msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:117 msgid "" -"New in Godot 4.0 is the ability to have directional lighting in 2D. " "Directional lighting is used to represent sunlight or moonlight. Light rays " "are casted parallel to each other, as if the sun or moon was infinitely far " "away from the surface that is receiving the light." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:122 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:121 msgid "DirectionalLight2D offers the following properties:" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:124 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:123 msgid "" "**Height:** The light's virtual height with regards to normal mapping " "(``0.0`` = parallel to surfaces, ``1.0`` = perpendicular to surfaces). By " @@ -31551,7 +31613,7 @@ msgid "" "affect shadows' appearance." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:130 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:129 msgid "" "**Max Distance:** The maximum distance from the camera center objects can be " "before their shadows are culled (in pixels). Decreasing this value can " @@ -31561,14 +31623,14 @@ msgid "" "fade out sooner when zooming onto a given point." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:139 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:138 msgid "" "Directional shadows will always appear to be infinitely long, regardless of " "the value of the **Height** property. This is a limitation of the shadow " "rendering method used for 2D lights in Godot." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:143 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:142 msgid "" "To have directional shadows that are not infinitely long, you should disable " "shadows in the DirectionalLight2D and use a custom shader that reads from " @@ -31576,39 +31638,39 @@ msgid "" "generated from LightOccluder2D nodes present in the scene." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:149 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:148 msgid "Common light properties" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:151 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:150 msgid "" "Both PointLight2D and DirectionalLight2D offer common properties, which are " "part of the Light2D base class:" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:154 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:153 msgid "" "**Enabled:** Allows toggling the light's visibility. Unlike hiding the light " "node, disabling this property will not hide the light's children." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:156 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:155 msgid "" "**Editor Only:** If enabled, the light is only visible within the editor. It " "will be automatically disabled in the running project." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:158 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:157 msgid "**Color:** The light's color." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:159 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:158 msgid "" "**Energy:** The light's intensity multiplier. Higher values result in a " "brighter light." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:160 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:159 msgid "" "**Blend Mode:** The blending formula used for light computations. The " "default **Add** is suited for most use cases. **Subtract** can be used for " @@ -31618,34 +31680,34 @@ msgid "" "linear interpolation." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:165 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:164 msgid "**Range > Z Min:** The lowest Z index affected by the light." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:166 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:165 msgid "**Range > Z Max:** The highest Z index affected by the light." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:167 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:166 msgid "**Range > Layer Min:** The lowest visual layer affected by the light." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:168 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:167 msgid "**Range > Layer Max:** The highest visual layer affected by the light." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:169 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:168 msgid "" "**Range > Item Cull Mask:** Controls which nodes receive light from this " "node, depending on the other nodes' enabled visual layers **Occluder Light " "Mask**. This can be used to prevent certain objects from receiving light." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:176 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:175 msgid "Setting up shadows" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:178 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:177 msgid "" "After enabling the **Shadow > Enabled** property on a PointLight2D or " "DirectionalLight2D node, you will not see any visual difference initially. " @@ -31653,20 +31715,20 @@ msgid "" "used as a basis for shadow casting." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:183 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:182 msgid "" "For shadows to appear in the scene, LightOccluder2D nodes must be added to " "the scene. These nodes must also have occluder polygons that are designed to " "match the sprite's outline." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:187 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:186 msgid "" "Along with their polygon resource (which must be set to have any visual " "effect), LightOccluder2D nodes have 2 properties:" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:190 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:189 msgid "" "**SDF Collision:** If enabled, the occluder will be part of a real-time " "generated *signed distance field* that can be used in custom shaders. When " @@ -31675,7 +31737,7 @@ msgid "" "for convenience." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:195 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:194 msgid "" "**Occluder Light Mask:** This is used in tandem with PointLight2D and " "DirectionalLight2D's **Shadow > Item Cull Mask** property to control which " @@ -31683,22 +31745,22 @@ msgid "" "objects from casting shadows." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:200 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:199 msgid "There are two ways to create light occluders:" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:203 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:202 msgid "Automatically generating a light occluder" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:205 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:204 msgid "" "Occluders can be created automatically from Sprite2D nodes by selecting the " "node, clicking the **Sprite2D** menu at the top of the 2D editor then " "choosing **Create LightOccluder2D Sibling**." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:209 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:208 msgid "" "In the dialog that appears, an outline will surround your sprite's edges. If " "the outline matches the sprite's edges closely, you can click **OK**. If the " @@ -31708,11 +31770,11 @@ msgid "" "results." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:216 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:215 msgid "Manually drawing a light occluder" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:218 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:217 msgid "" "Create a LightOccluder2D node, then select the node and click the \"+\" " "button at the top of the 2D editor. When asked to create a polygon resource, " @@ -31722,20 +31784,20 @@ msgid "" "then dragging." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:224 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:223 msgid "" "The following properties can be adjusted on 2D lights that have shadows " "enabled:" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:226 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:225 msgid "" "**Color:** The color of shaded areas. By default, shaded areas are fully " "black, but this can be changed for artistic purposes. The color's alpha " "channel controls how much the shadow is tinted by the specified color." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:229 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:228 msgid "" "**Filter:** The filter mode to use for shadows. The default **None** is the " "fastest to render, and is well suited for games with a pixel art aesthetic " @@ -31745,41 +31807,85 @@ msgid "" "cost." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:234 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:233 msgid "" "**Filter Smooth:** Controls how much softening is applied to shadows when " "**Filter** is set to **PCF5** or **PCF13**. Higher values result in a softer " "shadow, but may cause banding artifacts to be visible (especially with PCF5)." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:237 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:236 msgid "" "**Item Cull Mask:** Controls which LightOccluder2D nodes cast shadows, " "depending on their respective **Occluder Light Mask** properties." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:240 -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:244 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:241 +msgid "**Lighting and shadow resolution in pixel-art games**" +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:243 +msgid "" +"The engine computes 2D lighting and shadows at the **Viewport's pixel " +"resolution**, not at the source texture's texel resolution. The appearance " +"of lights and shadows depends on your window or Viewport resolution, not on " +"the resolution of individual sprite textures." +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:248 +msgid "" +"If you create a pixel-art game and want pixelated or blocky lighting and " +"shadows that match your art style, **Nearest** texture filtering will " +"**not** achieve this effect. Nearest filtering affects only how the engine " +"samples textures — it does not change how the engine renders lighting and " +"shadows." +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:253 +msgid "" +"To achieve pixelated lighting and shadows, use a custom shader to modify " +"``LIGHT_VERTEX`` and ``SHADOW_VERTEX`` to snap light sampling to a pixel " +"grid. The following shader snaps lighting to a grid using the ``floor()`` " +"function:" +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:272 +msgid "" +"This works by dividing the position by ``pixel_size`` to convert to grid " +"space, using ``floor()`` to round down to the nearest grid point, then " +"multiplying back to convert to screen space. The result forces the engine to " +"sample lighting from discrete grid positions, which creates the pixelated " +"effect." +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:277 +msgid "" +"For more information on canvas item shaders, see :ref:`CanvasItem shaders " +"`." +msgstr "" + +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:279 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:283 msgid "Hard shadows" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:246 -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:250 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:285 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:289 msgid "Soft shadows (PCF13, Filter Smooth 1.5)" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:252 -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:256 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:291 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:295 msgid "" "Soft shadows with streaking artifacts due to Filter Smooth being too high " "(PCF5, Filter Smooth 4)" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:259 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:298 msgid "Normal and specular maps" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:261 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:300 msgid "" "Normal maps and specular maps can greatly enhance the sense of depth of your " "2D lighting. Similar to how these work in 3D rendering, normal maps can help " @@ -31789,14 +31895,14 @@ msgid "" "to the viewer." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:267 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:306 msgid "" "Both PointLight2D and DirectionalLight2D support normal mapping and specular " -"mapping. Since Godot 4.0, normal and specular maps can be assigned to any 2D " -"element, including nodes that inherit from Node2D or Control." +"mapping. Normal and specular maps can be assigned to any 2D element, " +"including nodes that inherit from Node2D or Control." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:271 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:310 msgid "" "A normal map represents the direction in which each pixel is \"pointing\" " "towards. This information is then used by the engine to correctly apply " @@ -31805,7 +31911,7 @@ msgid "" "automatically generated from other textures." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:277 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:316 msgid "" "A specular map defines how much each pixel should reflect light (and in " "which color, if the specular map contains color). Brighter values will " @@ -31814,44 +31920,44 @@ msgid "" "a base." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:284 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:323 msgid "" "If you don't have normal or specular maps for your sprites, you can generate " "them using the free and open source `Laigter `__ tool." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:288 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:327 msgid "" "To set up normal maps and/or specular maps on a 2D node, create a new " "CanvasTexture resource for the property that draws the node's texture. For " "example, on a Sprite2D:" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:292 -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:296 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:331 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:335 msgid "Creating a CanvasTexture resource for a Sprite2D node" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:298 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:337 msgid "" "Expand the newly created resource. You can find several properties you will " "need to adjust:" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:301 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:340 msgid "" "**Diffuse > Texture:** The base color texture. In this property, load the " "texture you're using for the sprite itself." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:303 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:342 msgid "" "**Normal Map > Texture:** The normal map texture. In this property, load a " "normal map texture you've generated from a height map (see the tip above)." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:305 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:344 msgid "" "**Specular > Texture:** The specular map texture, which controls the " "specular intensity of each pixel on the diffuse texture. The specular map is " @@ -31860,11 +31966,11 @@ msgid "" "you've created (see the tip above)." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:310 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:349 msgid "**Specular > Color:** The color multiplier for specular reflections." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:311 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:350 msgid "" "**Specular > Shininess:** The specular exponent to use for reflections. " "Lower values will increase the brightness of reflections and make them more " @@ -31872,21 +31978,21 @@ msgid "" "values are more suited for wet-looking surfaces." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:315 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:354 msgid "" "**Texture > Filter:** Can be set to override the texture filtering mode, " "regardless of what the node's property is set to (or the **Rendering > " "Textures > Canvas Textures > Default Texture Filter** project setting)." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:319 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:358 msgid "" "**Texture > Repeat:** Can be set to override the texture filtering mode, " "regardless of what the node's property is set to (or the **Rendering > " "Textures > Canvas Textures > Default Texture Repeat** project setting)." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:324 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:363 msgid "" "After enabling normal mapping, you may notice that your lights appear to be " "weaker. To resolve this, increase the **Height** property on your " @@ -31895,11 +32001,11 @@ msgid "" "intensity looked prior to enabling normal mapping." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:331 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:370 msgid "Using additive sprites as a faster alternative to 2D lights" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:333 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:372 msgid "" "If you run into performance issues when using 2D lights, it may be worth " "replacing some of them with Sprite2D nodes that use additive blending. This " @@ -31907,7 +32013,7 @@ msgid "" "explosions." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:337 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:376 msgid "" "Additive sprites are much faster to render, since they don't need to go " "through a separate rendering pipeline. Additionally, it is possible to use " @@ -31915,26 +32021,26 @@ msgid "" "allows for animated 2D \"lights\" to be created." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:342 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:381 msgid "However, additive sprites have a few downsides compared to 2D lights:" msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:344 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:383 msgid "" "The blending formula is inaccurate compared to \"actual\" 2D lighting. This " "is usually not a problem in sufficiently lit areas, but this prevents " "additive sprites from correctly lighting up areas that are fully dark." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:347 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:386 msgid "Additive sprites cannot cast shadows, since they are not lights." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:348 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:387 msgid "Additive sprites ignore normal and specular maps used on other sprites." msgstr "" -#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:350 +#: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:389 msgid "" "To display a sprite with additive blending, create a Sprite2D node and " "assign a texture to it. In the inspector, scroll down to the **CanvasItem > " @@ -33171,6 +33277,7 @@ msgid "Multisample antialiasing (MSAA)" msgstr "" #: ../../docs/tutorials/2d/2d_antialiasing.rst:58 +#: ../../docs/tutorials/3d/standard_material_3d.rst:438 #: ../../docs/tutorials/3d/3d_antialiasing.rst:160 #: ../../docs/tutorials/3d/3d_antialiasing.rst:187 #: ../../docs/tutorials/3d/3d_antialiasing.rst:254 @@ -34315,6 +34422,7 @@ msgstr "" #: ../../docs/tutorials/platform/web/customizing_html5_shell.rst:46 #: ../../docs/tutorials/shaders/your_first_shader/your_first_2d_shader.rst:23 #: ../../docs/tutorials/xr/deploying_to_android.rst:7 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:26 msgid "Setup" msgstr "" @@ -34692,11 +34800,11 @@ msgstr "" #: ../../docs/tutorials/2d/using_tilesets.rst:160 msgid "" -"Since Godot 4.0, you can place actual *scenes* as tiles. This allows you to " -"use any collection of nodes as a tile. For example, you could use scene " -"tiles to place gameplay elements, such as shops the player may be able to " -"interact with. You could also use scene tiles to place AudioStreamPlayer2Ds " -"(for ambient sounds), particle effects, and more." +"You can also place actual *scenes* as tiles. This allows you to use any " +"collection of nodes as a tile. For example, you could use scene tiles to " +"place gameplay elements, such as shops the player may be able to interact " +"with. You could also use scene tiles to place AudioStreamPlayer2Ds (for " +"ambient sounds), particle effects, and more." msgstr "" #: ../../docs/tutorials/2d/using_tilesets.rst:168 @@ -37138,32 +37246,32 @@ msgstr "" #: ../../docs/tutorials/3d/using_transforms.rst:244 msgid "" "Imagine you need to shoot a bullet in the direction your player is facing. " -"Just use the forward axis (commonly ``Z`` or ``-Z``)." +"Just use the forward axis." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:257 +#: ../../docs/tutorials/3d/using_transforms.rst:263 msgid "" "Is the enemy looking at the player? Use the dot product for this (see " "the :ref:`doc_vector_math` tutorial for an explanation of the dot product):" msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:276 +#: ../../docs/tutorials/3d/using_transforms.rst:282 msgid "Strafe left:" msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:293 +#: ../../docs/tutorials/3d/using_transforms.rst:307 msgid "Jump:" msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:314 +#: ../../docs/tutorials/3d/using_transforms.rst:332 msgid "All common behaviors and logic can be done with just vectors." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:317 +#: ../../docs/tutorials/3d/using_transforms.rst:335 msgid "Setting information" msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:319 +#: ../../docs/tutorials/3d/using_transforms.rst:337 msgid "" "There are, of course, cases where you want to set information to a " "transform. Imagine a first person controller or orbiting camera. Those are " @@ -37171,28 +37279,28 @@ msgid "" "in a specific order." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:321 +#: ../../docs/tutorials/3d/using_transforms.rst:339 msgid "" "For such cases, keep the angles and rotations *outside* the transform and " "set them every frame. Don't try to retrieve and reuse them because the " "transform is not meant to be used this way." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:323 +#: ../../docs/tutorials/3d/using_transforms.rst:341 msgid "Example of looking around, FPS style:" msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:365 +#: ../../docs/tutorials/3d/using_transforms.rst:383 msgid "" "As you can see, in such cases it's even simpler to keep the rotation " "outside, then use the transform as the *final* orientation." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:368 +#: ../../docs/tutorials/3d/using_transforms.rst:386 msgid "Interpolating with quaternions" msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:370 +#: ../../docs/tutorials/3d/using_transforms.rst:388 msgid "" "Interpolating between two transforms can efficiently be done with " "quaternions. More information about how quaternions work can be found in " @@ -37202,11 +37310,11 @@ msgid "" "allow interpolation between them using the closest axis." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:372 +#: ../../docs/tutorials/3d/using_transforms.rst:390 msgid "Converting a rotation to quaternion is straightforward." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:395 +#: ../../docs/tutorials/3d/using_transforms.rst:413 msgid "" "The :ref:`class_Quaternion` type reference has more information on the " "datatype (it can also do transform accumulation, transform points, etc., " @@ -37215,24 +37323,24 @@ msgid "" "Otherwise, they will also suffer from numerical precision errors." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:401 +#: ../../docs/tutorials/3d/using_transforms.rst:419 msgid "" "Quaternions are useful when doing camera/path/etc. interpolations, as the " "result will always be correct and smooth." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:404 +#: ../../docs/tutorials/3d/using_transforms.rst:422 msgid "Transforms are your friend" msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:406 +#: ../../docs/tutorials/3d/using_transforms.rst:424 msgid "" "For most beginners, getting used to working with transforms can take some " "time. However, once you get used to them, you will appreciate their " "simplicity and power." msgstr "" -#: ../../docs/tutorials/3d/using_transforms.rst:408 +#: ../../docs/tutorials/3d/using_transforms.rst:426 msgid "" "Don't hesitate to ask for help on this topic in any of Godot's `online " "communities `_ and, once you become " @@ -37523,6 +37631,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:29 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:327 msgid "Index" msgstr "" @@ -37535,6 +37644,7 @@ msgid "Array type" msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:33 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:332 #: ../../docs/tutorials/io/binary_serialization_api.rst:47 #: ../../docs/tutorials/xr/xr_action_map.rst:151 msgid "0" @@ -37551,6 +37661,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:37 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:337 #: ../../docs/tutorials/io/binary_serialization_api.rst:49 #: ../../docs/tutorials/io/binary_serialization_api.rst:496 #: ../../docs/tutorials/ui/bbcode_in_richtextlabel.rst:928 @@ -37568,8 +37679,9 @@ msgid ":ref:`PackedVector3Array `" msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:41 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:342 #: ../../docs/tutorials/io/binary_serialization_api.rst:51 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:497 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:505 #: ../../docs/tutorials/xr/xr_action_map.rst:145 #: ../../docs/tutorials/xr/xr_action_map.rst:234 msgid "2" @@ -37588,8 +37700,9 @@ msgid "" msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:46 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:347 #: ../../docs/tutorials/io/binary_serialization_api.rst:53 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:499 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:507 #: ../../docs/tutorials/xr/xr_action_map.rst:150 #: ../../docs/tutorials/xr/xr_action_map.rst:239 msgid "3" @@ -37697,7 +37810,7 @@ msgstr "" #: ../../docs/tutorials/io/binary_serialization_api.rst:604 #: ../../docs/tutorials/io/binary_serialization_api.rst:606 #: ../../docs/tutorials/io/binary_serialization_api.rst:608 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:501 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:509 msgid "4" msgstr "" @@ -37714,7 +37827,7 @@ msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:54 #: ../../docs/tutorials/io/binary_serialization_api.rst:57 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:503 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:511 msgid "5" msgstr "" @@ -37724,7 +37837,7 @@ msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:58 #: ../../docs/tutorials/io/binary_serialization_api.rst:67 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:513 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:521 msgid "10" msgstr "" @@ -37741,7 +37854,7 @@ msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:62 #: ../../docs/tutorials/io/binary_serialization_api.rst:69 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:515 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:523 msgid "11" msgstr "" @@ -37856,15 +37969,131 @@ msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:229 msgid "" "The code that goes in the middle can be whatever you want. Below we will " -"present some example code for generating a sphere." +"present some example code for generating shapes, starting with a rectangle." msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:233 -msgid "Generating geometry" +msgid "Generating a rectangle" msgstr "" #: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:235 msgid "" +"Since we are using ``Mesh.PRIMITIVE_TRIANGLES`` to render, we will construct " +"a rectangle with triangles." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:238 +msgid "" +"A rectangle is formed by two triangles sharing four vertices. For our " +"example, we will create a rectangle with its top left point at ``(0, 0, 0)`` " +"with a width and length of one as shown below:" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:241 +msgid "A rectangle made of two triangles sharing four vertices." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:245 +msgid "" +"To draw this rectangle, define the coordinates of each vertex in the " +"``verts`` array." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:267 +msgid "" +"The ``uvs`` array helps describe where parts of a texture should go onto the " +"mesh. The values range from 0 to 1. Depending on your texture, you may want " +"to change these values." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:290 +msgid "" +"The ``normals`` array is used to describe the direction the vertices face " +"and is used in lighting calculations. For this example, we will default to " +"the ``Vector3.UP`` direction." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:314 +msgid "" +"The ``indices`` array defines the order vertices are drawn. Godot renders in " +"a *clockwise* direction, meaning that we must specify the vertices of a " +"triangle we want to draw in clockwise order." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:318 +msgid "" +"For example, to draw the first triangle, we will want to draw the vertices " +"``(0, 0, 0)``, ``(1, 0, 0)``, and ``(0, 0, 1)`` in that order. This is the " +"same as drawing ``vert[0]``, ``vert[2]``, and ``vert[1]``, i.e., indices 0, " +"2, and 1, in the ``verts`` array. These index values are what the " +"``indices`` array defines." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:328 +msgid "``verts[Index]``" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:329 +msgid "``uvs[Index]``" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:330 +msgid "``normals[Index]``" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:333 +msgid "(0, 0, 0)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:334 +msgid "(0, 0)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:335 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:340 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:345 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:350 +msgid "Vector3.UP" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:338 +msgid "(0, 0, 1)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:339 +msgid "(1, 0)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:343 +msgid "(1, 0, 0)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:344 +msgid "(0, 1)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:348 +msgid "(1, 0, 1)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:349 +msgid "(1, 1)" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:368 +msgid "Put together, the rectangle generation code looks like:" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:451 +msgid "For a more complex example, see the sphere generation section below." +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:454 +msgid "Generating a sphere" +msgstr "" + +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:456 +msgid "" "Here is sample code for generating a sphere. Although the code is presented " "in GDScript, there is nothing Godot specific about the approach to " "generating it. This implementation has nothing in particular to do with " @@ -37873,11 +38102,11 @@ msgid "" "geometry in general, you can use any tutorial that you find online." msgstr "" -#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:350 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:571 msgid "Saving" msgstr "" -#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:352 +#: ../../docs/tutorials/3d/procedural_geometry/arraymesh.rst:573 msgid "" "Finally, we can use the :ref:`ResourceSaver ` class to " "save the ArrayMesh. This is useful when you want to generate a mesh and then " @@ -38025,14 +38254,14 @@ msgid "" "to remove duplicate vertices." msgstr "" -#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:166 +#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:175 msgid "" "Similarly, if you have an index array, but you want each vertex to be unique " "(e.g. because you want to use unique normals or colors per face instead of " "per-vertex), you can call ``deindex()``." msgstr "" -#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:178 +#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:187 msgid "" "If you don't add custom normals yourself, you can add them using " "``generate_normals()``, which should be called after generating geometry and " @@ -38042,7 +38271,7 @@ msgid "" "``Mesh.PRIMITIVE_TRIANGLES``." msgstr "" -#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:183 +#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:192 msgid "" "You may notice that normal mapping or other material properties look broken " "on the generated mesh. This is because normal mapping **requires** the mesh " @@ -38052,7 +38281,7 @@ msgid "" "normals set already." msgstr "" -#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:203 +#: ../../docs/tutorials/3d/procedural_geometry/surfacetool.rst:212 msgid "" "By default, when generating normals, they will be calculated on a per-vertex " "basis (i.e. they will be \"smooth normals\"). If you want flat vertex " @@ -38938,14 +39167,14 @@ msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:188 msgid "" -"**Sub:** The final color of the object is subtracted from the color of the " -"screen." +"**Subtract:** The final color of the object is subtracted from the color of " +"the screen." msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:190 msgid "" -"**Mul:** The final color of the object is multiplied with the color of the " -"screen." +"**Multiply:** The final color of the object is multiplied with the color of " +"the screen." msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:192 @@ -39038,35 +39267,50 @@ msgid "" "bottom of this page)." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:248 -msgid "Shading mode" +#: ../../docs/tutorials/3d/standard_material_3d.rst:245 +msgid "Depth Test" +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:247 +msgid "" +"This can be used to invert the standard depth test. When set to " +"**Inverted**, the object will only appear when occluded, and will be hidden " +"otherwise." msgstr "" #: ../../docs/tutorials/3d/standard_material_3d.rst:250 +msgid "This has no effect if **No Depth Test** is enabled." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:258 +msgid "Shading mode" +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:260 msgid "" "Materials support three shading modes: **Per-Pixel**, **Per-Vertex**, and " "**Unshaded**." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:253 +#: ../../docs/tutorials/3d/standard_material_3d.rst:263 msgid "Three spheres showing the Per-Pixel, Per-Vertex, and Unshaded modes." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:257 +#: ../../docs/tutorials/3d/standard_material_3d.rst:267 msgid "" "The **Per-Pixel** shading mode calculates lighting for each pixel, and is a " "good fit for most use cases. However, in some cases you may want to increase " "performance by using another shading mode." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:261 +#: ../../docs/tutorials/3d/standard_material_3d.rst:271 msgid "" "The **Per-Vertex** shading mode, often called \"vertex shading\" or \"vertex " "lighting\", instead calculates lighting once for each vertex, and " "interpolates the result between each pixel." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:265 +#: ../../docs/tutorials/3d/standard_material_3d.rst:275 msgid "" "On low-end or mobile devices, using per-vertex lighting can considerably " "increase rendering performance. When rendering several layers of " @@ -39074,19 +39318,19 @@ msgid "" "can improve performance, especially when the camera is close to particles." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:270 +#: ../../docs/tutorials/3d/standard_material_3d.rst:280 msgid "You can also use per-vertex lighting to achieve a retro look." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:272 +#: ../../docs/tutorials/3d/standard_material_3d.rst:282 msgid "Two cubes with a brick texture, one shaded and one unshaded." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:276 +#: ../../docs/tutorials/3d/standard_material_3d.rst:286 msgid "Texture from `AmbientCG `__" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:278 +#: ../../docs/tutorials/3d/standard_material_3d.rst:288 msgid "" "The **Unshaded** shading mode does not calculate lighting at all. Instead, " "the **Albedo** color is output directly. Lights will not affect the material " @@ -39094,41 +39338,41 @@ msgid "" "than shaded materials." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:283 +#: ../../docs/tutorials/3d/standard_material_3d.rst:293 msgid "" "Rendering unshaded is useful for some specific visual effects. If maximum " "performance is needed, it can also be used for particles, or low-end or " "mobile devices." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:288 +#: ../../docs/tutorials/3d/standard_material_3d.rst:298 msgid "Diffuse Mode" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:290 +#: ../../docs/tutorials/3d/standard_material_3d.rst:300 msgid "" "Specifies the algorithm used by diffuse scattering of light when hitting the " "object. The default is **Burley**. Other modes are also available:" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:293 +#: ../../docs/tutorials/3d/standard_material_3d.rst:303 msgid "" "**Burley:** Default mode, the original Disney Principled PBS diffuse " "algorithm." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:294 +#: ../../docs/tutorials/3d/standard_material_3d.rst:304 msgid "**Lambert:** Is not affected by roughness." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:295 +#: ../../docs/tutorials/3d/standard_material_3d.rst:305 msgid "" "**Lambert Wrap:** Extends Lambert to cover more than 90 degrees when " "roughness increases. Works great for hair and simulating cheap subsurface " "scattering. This implementation is energy conserving." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:298 +#: ../../docs/tutorials/3d/standard_material_3d.rst:308 msgid "" "**Toon:** Provides a hard cut for lighting, with smoothing affected by " "roughness. It is recommended you disable sky contribution from your " @@ -39136,44 +39380,44 @@ msgid "" "StandardMaterial3D to achieve a better effect." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:306 +#: ../../docs/tutorials/3d/standard_material_3d.rst:316 msgid "Specular Mode" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:308 +#: ../../docs/tutorials/3d/standard_material_3d.rst:318 msgid "" "Specifies how the specular blob will be rendered. The specular blob " "represents the shape of a light source reflected in the object." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:311 +#: ../../docs/tutorials/3d/standard_material_3d.rst:321 msgid "**SchlickGGX:** The most common blob used by PBR 3D engines nowadays." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:312 +#: ../../docs/tutorials/3d/standard_material_3d.rst:322 msgid "" "**Toon:** Creates a toon blob, which changes size depending on roughness." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:313 +#: ../../docs/tutorials/3d/standard_material_3d.rst:323 msgid "**Disabled:** Sometimes the blob gets in the way. Begone!" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:318 +#: ../../docs/tutorials/3d/standard_material_3d.rst:328 msgid "Disable Ambient Light" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:320 +#: ../../docs/tutorials/3d/standard_material_3d.rst:330 msgid "" "Makes the object not receive any kind of ambient lighting that would " "otherwise light it." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:324 +#: ../../docs/tutorials/3d/standard_material_3d.rst:334 msgid "Disable Fog" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:326 +#: ../../docs/tutorials/3d/standard_material_3d.rst:336 msgid "" "Makes the object unaffected by depth-based or volumetric fog. This is useful " "for particles or other additively blended materials that would otherwise " @@ -39181,49 +39425,49 @@ msgid "" "without the fog)." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:329 +#: ../../docs/tutorials/3d/standard_material_3d.rst:339 msgid "Disable Specular Occlusion" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:331 +#: ../../docs/tutorials/3d/standard_material_3d.rst:341 msgid "" "Makes the object not have its reflections reduced where they would usually " "be occluded." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:334 +#: ../../docs/tutorials/3d/standard_material_3d.rst:344 msgid "Vertex Color" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:336 +#: ../../docs/tutorials/3d/standard_material_3d.rst:346 msgid "" "This setting allows choosing what is done by default to vertex colors that " "come from your 3D modeling application. By default, they are ignored." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:342 +#: ../../docs/tutorials/3d/standard_material_3d.rst:352 msgid "Use as Albedo" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:344 +#: ../../docs/tutorials/3d/standard_material_3d.rst:354 msgid "Choosing this option means vertex color is used as albedo color." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:347 +#: ../../docs/tutorials/3d/standard_material_3d.rst:357 msgid "Is sRGB" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:349 +#: ../../docs/tutorials/3d/standard_material_3d.rst:359 msgid "" "Most 3D modeling software will likely export vertex colors as sRGB, so " "toggling this option on will help them look correct." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:353 +#: ../../docs/tutorials/3d/standard_material_3d.rst:363 msgid "Albedo" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:355 +#: ../../docs/tutorials/3d/standard_material_3d.rst:365 msgid "" "*Albedo* is the base color for the material, on which all the other settings " "operate. When set to *Unshaded*, this is the only color that is visible. In " @@ -39232,22 +39476,22 @@ msgid "" "color affects many more calculations than just the diffuse lighting path." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:361 +#: ../../docs/tutorials/3d/standard_material_3d.rst:371 msgid "Albedo color and texture can be used together as they are multiplied." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:363 +#: ../../docs/tutorials/3d/standard_material_3d.rst:373 msgid "" "*Alpha channel* in albedo color and texture is also used for the object " "transparency. If you use a color or texture with *alpha channel*, make sure " "to either enable transparency or *alpha scissoring* for it to work." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:368 +#: ../../docs/tutorials/3d/standard_material_3d.rst:378 msgid "Metallic" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:370 +#: ../../docs/tutorials/3d/standard_material_3d.rst:380 msgid "" "Godot uses a metallic model over competing models due to its simplicity. " "This parameter defines how reflective the material is. The more reflective, " @@ -39255,24 +39499,24 @@ msgid "" "reflected. This model is called \"energy-conserving\"." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:375 +#: ../../docs/tutorials/3d/standard_material_3d.rst:385 msgid "" "The *Specular* parameter is a general amount for the reflectivity (unlike " "*Metallic*, this is not energy-conserving, so leave it at ``0.5`` and don't " "touch it unless you need to)." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:379 +#: ../../docs/tutorials/3d/standard_material_3d.rst:389 msgid "" "The minimum internal reflectivity is ``0.04``, so it's impossible to make a " "material completely unreflective, just like in real life." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:385 +#: ../../docs/tutorials/3d/standard_material_3d.rst:395 msgid "Roughness" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:387 +#: ../../docs/tutorials/3d/standard_material_3d.rst:397 msgid "" "*Roughness* affects the way reflection happens. A value of ``0`` makes it a " "perfect mirror while a value of ``1`` completely blurs the reflection " @@ -39280,11 +39524,11 @@ msgid "" "achieved with the right combination of *Metallic* and *Roughness*." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:395 +#: ../../docs/tutorials/3d/standard_material_3d.rst:405 msgid "Emission" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:397 +#: ../../docs/tutorials/3d/standard_material_3d.rst:407 msgid "" "*Emission* specifies how much light is emitted by the material (keep in mind " "this does not include light surrounding geometry unless :ref:`VoxelGI " @@ -39293,11 +39537,11 @@ msgid "" "lighting in the scene." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:405 +#: ../../docs/tutorials/3d/standard_material_3d.rst:415 msgid "Normal map" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:407 +#: ../../docs/tutorials/3d/standard_material_3d.rst:417 msgid "" "Normal mapping allows you to set a texture that represents finer shape " "detail. This does not modify geometry, only the incident angle for light. In " @@ -39305,7 +39549,7 @@ msgid "" "compression and wider compatibility." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:416 +#: ../../docs/tutorials/3d/standard_material_3d.rst:426 msgid "" "Godot requires the normal map to use the X+, Y+ and Z+ coordinates, this is " "known as OpenGL style. If you've imported a material made to be used with " @@ -39313,63 +39557,63 @@ msgid "" "to be converted so its Y axis is flipped." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:421 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:335 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:444 +#: ../../docs/tutorials/3d/standard_material_3d.rst:431 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:332 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:441 msgid "" "More information about normal maps (including a coordinate order table for " "popular engines) can be found `here `__." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:426 +#: ../../docs/tutorials/3d/standard_material_3d.rst:436 msgid "Bent normal map" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:428 +#: ../../docs/tutorials/3d/standard_material_3d.rst:441 msgid "" "A bent normal map describes the average direction of ambient lighting. " "Unlike a regular normal map, this is used to improve how a material reacts " "to lighting rather than add surface detail." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:432 +#: ../../docs/tutorials/3d/standard_material_3d.rst:445 msgid "This is achieved in two ways:" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:434 +#: ../../docs/tutorials/3d/standard_material_3d.rst:447 msgid "" "Indirect diffuse lighting is made to match global illumination more closely." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:435 +#: ../../docs/tutorials/3d/standard_material_3d.rst:448 msgid "" "If specular occlusion is enabled, it is calculated using the bent normals " "and ambient occlusion instead of just from ambient light. This includes " "screen-space ambient occlusion (SSAO) and other sources of ambient occlusion." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:442 +#: ../../docs/tutorials/3d/standard_material_3d.rst:455 msgid "" "Godot only uses the red and green channels of a bent normal map for better " "compression and wider compatibility." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:445 +#: ../../docs/tutorials/3d/standard_material_3d.rst:458 msgid "" "When creating a bent normal map, there are three things required for it to " "work correctly in Godot:" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:448 +#: ../../docs/tutorials/3d/standard_material_3d.rst:461 msgid "A **cosine distribution** of rays has to be used when baking." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:449 +#: ../../docs/tutorials/3d/standard_material_3d.rst:462 msgid "The texture must be created in **tangent space**." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:450 +#: ../../docs/tutorials/3d/standard_material_3d.rst:463 msgid "" "The bent normal map needs to use the X+, Y+, and Z+ coordinates, this is " "known as OpenGL style. If you've imported a material made to be used with " @@ -39379,18 +39623,18 @@ msgid "" "Green** in the import dock." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:459 +#: ../../docs/tutorials/3d/standard_material_3d.rst:472 msgid "" "A bent normal map is different from a regular normal map. The two are not " "interchangeable." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:463 +#: ../../docs/tutorials/3d/standard_material_3d.rst:476 #: ../../docs/tutorials/3d/visibility_ranges.rst:216 msgid "Rim" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:465 +#: ../../docs/tutorials/3d/standard_material_3d.rst:478 msgid "" "Some fabrics have small micro-fur that causes light to scatter around it. " "Godot emulates this with the *Rim* parameter. Unlike other rim lighting " @@ -39399,7 +39643,7 @@ msgid "" "considerably more believable." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:472 +#: ../../docs/tutorials/3d/standard_material_3d.rst:485 msgid "" "Rim size depends on roughness, and there is a special parameter to specify " "how it must be colored. If *Tint* is ``0``, the color of the light is used " @@ -39407,24 +39651,24 @@ msgid "" "Using intermediate values generally works best." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:478 +#: ../../docs/tutorials/3d/standard_material_3d.rst:491 #: ../../docs/tutorials/3d/visibility_ranges.rst:217 msgid "Clearcoat" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:481 +#: ../../docs/tutorials/3d/standard_material_3d.rst:494 msgid "" "The *Clearcoat* parameter is used to add a secondary pass of transparent " "coat to the material. This is common in car paint and toys. In practice, " "it's a smaller specular blob added on top of the existing material." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:488 +#: ../../docs/tutorials/3d/standard_material_3d.rst:501 #: ../../docs/tutorials/3d/visibility_ranges.rst:218 msgid "Anisotropy" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:491 +#: ../../docs/tutorials/3d/standard_material_3d.rst:504 msgid "" "This changes the shape of the specular blob and aligns it to tangent space. " "Anisotropy is commonly used with hair, or to make materials such as brushed " @@ -39432,11 +39676,11 @@ msgid "" "flowmaps." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:498 +#: ../../docs/tutorials/3d/standard_material_3d.rst:511 msgid "Ambient Occlusion" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:500 +#: ../../docs/tutorials/3d/standard_material_3d.rst:513 msgid "" "It is possible to specify a baked ambient occlusion map. This map affects " "how much ambient light reaches each surface of the object (it does not " @@ -39446,12 +39690,12 @@ msgid "" "whenever possible." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:509 +#: ../../docs/tutorials/3d/standard_material_3d.rst:522 #: ../../docs/tutorials/3d/visibility_ranges.rst:219 msgid "Height" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:511 +#: ../../docs/tutorials/3d/standard_material_3d.rst:524 msgid "" "Setting a height map on a material produces a ray-marched search to emulate " "the proper displacement of cavities along the view direction. This only " @@ -39462,12 +39706,12 @@ msgid "" "*Height* should be used together with normal mapping." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:522 +#: ../../docs/tutorials/3d/standard_material_3d.rst:535 #: ../../docs/tutorials/3d/visibility_ranges.rst:220 msgid "Subsurface Scattering" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:524 +#: ../../docs/tutorials/3d/standard_material_3d.rst:537 #: ../../docs/tutorials/3d/3d_antialiasing.rst:91 #: ../../docs/tutorials/3d/3d_antialiasing.rst:124 #: ../../docs/tutorials/3d/resolution_scaling.rst:188 @@ -39476,45 +39720,45 @@ msgid "" "Compatibility renderers.*" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:527 +#: ../../docs/tutorials/3d/standard_material_3d.rst:540 msgid "" "This effect emulates light that penetrates an object's surface, is " "scattered, and then comes out. It is useful to create realistic skin, " "marble, colored liquids, etc." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:534 +#: ../../docs/tutorials/3d/standard_material_3d.rst:547 #: ../../docs/tutorials/3d/visibility_ranges.rst:221 msgid "Back Lighting" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:536 +#: ../../docs/tutorials/3d/standard_material_3d.rst:549 msgid "" "This controls how much light from the lit side (visible to light) is " "transferred to the dark side (opposite from the light). This works well for " "thin objects such as plant leaves, grass, human ears, etc." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:543 +#: ../../docs/tutorials/3d/standard_material_3d.rst:556 #: ../../docs/tutorials/3d/visibility_ranges.rst:222 msgid "Refraction" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:545 +#: ../../docs/tutorials/3d/standard_material_3d.rst:558 msgid "" "When refraction is enabled, Godot attempts to fetch information from behind " "the object being rendered. This allows distorting the transparency in a way " "similar to refraction in real life." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:549 +#: ../../docs/tutorials/3d/standard_material_3d.rst:562 msgid "" "Remember to use a transparent albedo texture (or reduce the albedo color's " "alpha channel) to make refraction visible, as refraction relies on " "transparency to have a visible effect." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:553 +#: ../../docs/tutorials/3d/standard_material_3d.rst:566 msgid "" "Refraction also takes the material roughness into account. Higher roughness " "values will make the objects behind the refraction look blurrier, which " @@ -39523,60 +39767,60 @@ msgid "" "material's **Roughness** value." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:559 +#: ../../docs/tutorials/3d/standard_material_3d.rst:572 msgid "" "A normal map can optionally be specified in the **Refraction Texture** " "property to allow distorting the refraction's direction on a per-pixel basis." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:566 +#: ../../docs/tutorials/3d/standard_material_3d.rst:579 msgid "" "Refraction is implemented as a screen-space effect and forces the material " "to be transparent. This makes the effect relatively fast, but this results " "in some limitations:" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:570 +#: ../../docs/tutorials/3d/standard_material_3d.rst:583 msgid "" ":ref:`Transparency sorting " "` issues may occur." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:572 +#: ../../docs/tutorials/3d/standard_material_3d.rst:585 msgid "" "The refractive material cannot refract onto itself, or onto other " "transparent materials. A refractive material behind another transparent " "material will be invisible." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:575 +#: ../../docs/tutorials/3d/standard_material_3d.rst:588 msgid "" "Off-screen objects cannot appear in the refraction. This is most noticeable " "with high refraction strength values." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:577 +#: ../../docs/tutorials/3d/standard_material_3d.rst:590 msgid "" "Opaque materials in front of the refractive material will appear to have " "\"refracted\" edges, even though they shouldn't." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:581 +#: ../../docs/tutorials/3d/standard_material_3d.rst:594 msgid "Detail" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:583 +#: ../../docs/tutorials/3d/standard_material_3d.rst:596 msgid "" "Godot allows using secondary albedo and normal maps to generate a detail " "texture, which can be blended in many ways. By combining this with secondary " "UV or triplanar modes, many interesting textures can be achieved." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:589 +#: ../../docs/tutorials/3d/standard_material_3d.rst:602 msgid "There are several settings that control how detail is used." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:591 +#: ../../docs/tutorials/3d/standard_material_3d.rst:604 msgid "" "Mask: The detail mask is a black and white image used to control where the " "blending takes place on a texture. White is for the detail textures, Black " @@ -39584,26 +39828,26 @@ msgid "" "partial blending of the material textures and detail textures." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:596 +#: ../../docs/tutorials/3d/standard_material_3d.rst:609 msgid "" "Blend Mode: These four modes control how the textures are blended together." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:598 +#: ../../docs/tutorials/3d/standard_material_3d.rst:611 msgid "" "Mix: Combines pixel values of both textures. At black, only show the " "material texture, at white, only show the detail texture. Values of gray " "create a smooth blend between the two." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:602 +#: ../../docs/tutorials/3d/standard_material_3d.rst:615 msgid "" "Add: Adds pixel values of one Texture with the other. Unlike mix mode both " "textures are completely mixed at white parts of a mask and not at gray " "parts. The original texture is mostly unchanged at black" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:606 +#: ../../docs/tutorials/3d/standard_material_3d.rst:619 msgid "" "Sub: Subtracts pixel values of one texture with the other. The second " "texture is completely subtracted at white parts of a mask with only a little " @@ -39611,41 +39855,41 @@ msgid "" "based on the exact texture." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:611 +#: ../../docs/tutorials/3d/standard_material_3d.rst:624 msgid "" "Mul: Multiplies the RGB channel numbers for each pixel from the top texture " "with the values for the corresponding pixel from the bottom texture." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:614 +#: ../../docs/tutorials/3d/standard_material_3d.rst:627 msgid "" "Albedo: This is where you put an albedo texture you want to blend. If " "nothing is in this slot it will be interpreted as white by default." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:617 +#: ../../docs/tutorials/3d/standard_material_3d.rst:630 msgid "" "Normal: This is where you put a normal texture you want to blend. If nothing " "is in this slot it will be interpreted as a flat normal map. This can still " "be used even if the material does not have normal map enabled." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:622 +#: ../../docs/tutorials/3d/standard_material_3d.rst:635 msgid "UV1 and UV2" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:624 +#: ../../docs/tutorials/3d/standard_material_3d.rst:637 msgid "" "Godot supports two UV channels per material. Secondary UV is often useful " "for ambient occlusion or emission (baked light). UVs can be scaled and " "offset, which is useful when using repeating textures." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:631 +#: ../../docs/tutorials/3d/standard_material_3d.rst:644 msgid "Triplanar Mapping" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:633 +#: ../../docs/tutorials/3d/standard_material_3d.rst:646 msgid "" "Triplanar mapping is supported for both UV1 and UV2. This is an alternative " "way to obtain texture coordinates, sometimes called \"Autotexture\". " @@ -39653,141 +39897,141 @@ msgid "" "mapping can be performed in either world space or object space." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:638 +#: ../../docs/tutorials/3d/standard_material_3d.rst:651 msgid "" "In the image below, you can see how all primitives share the same material " "with world triplanar, so the brick texture continues smoothly between them." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:644 +#: ../../docs/tutorials/3d/standard_material_3d.rst:657 msgid "World Triplanar" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:646 +#: ../../docs/tutorials/3d/standard_material_3d.rst:659 msgid "" "When using triplanar mapping, it is computed in object local space. This " "option makes it use world space instead." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:652 +#: ../../docs/tutorials/3d/standard_material_3d.rst:665 msgid "Sampling" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:655 +#: ../../docs/tutorials/3d/standard_material_3d.rst:668 #: ../../docs/tutorials/audio/audio_effects.rst:122 msgid "Filter" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:657 +#: ../../docs/tutorials/3d/standard_material_3d.rst:670 msgid "" "The filtering method for the textures used by the material. See :ref:`this " "page` for a full list of " "options and their description." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:661 +#: ../../docs/tutorials/3d/standard_material_3d.rst:674 msgid "Repeat" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:663 +#: ../../docs/tutorials/3d/standard_material_3d.rst:676 msgid "" "if the textures used by the material repeat, and how they repeat. " "See :ref:`this page` for a " "full list of options and their description." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:667 +#: ../../docs/tutorials/3d/standard_material_3d.rst:680 msgid "Shadows" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:670 -msgid "Do Not Receive Shadows" +#: ../../docs/tutorials/3d/standard_material_3d.rst:683 +msgid "Disable Receive Shadows" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:672 +#: ../../docs/tutorials/3d/standard_material_3d.rst:685 msgid "" "Makes the object not receive any kind of shadow that would otherwise be cast " "onto it." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:676 -msgid "Use Shadow to Opacity" +#: ../../docs/tutorials/3d/standard_material_3d.rst:689 +msgid "Shadow to Opacity" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:678 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:78 +#: ../../docs/tutorials/3d/standard_material_3d.rst:691 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:84 msgid "" "Lighting modifies the alpha so shadowed areas are opaque and non-shadowed " "areas are transparent. Useful for overlaying shadows onto a camera feed in " "AR." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:682 +#: ../../docs/tutorials/3d/standard_material_3d.rst:695 msgid "Billboard" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:685 +#: ../../docs/tutorials/3d/standard_material_3d.rst:698 msgid "Billboard Mode" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:687 +#: ../../docs/tutorials/3d/standard_material_3d.rst:700 msgid "" "Enables billboard mode for drawing materials. This controls how the object " "faces the camera:" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:690 +#: ../../docs/tutorials/3d/standard_material_3d.rst:703 msgid "**Disabled:** Billboard mode is disabled." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:691 +#: ../../docs/tutorials/3d/standard_material_3d.rst:704 msgid "" "**Enabled:** Billboard mode is enabled. The object's -Z axis will always " "face the camera's viewing plane." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:693 +#: ../../docs/tutorials/3d/standard_material_3d.rst:706 msgid "" "**Y-Billboard:** The object's X axis will always be aligned with the " "camera's viewing plane." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:694 +#: ../../docs/tutorials/3d/standard_material_3d.rst:707 msgid "" "**Particle Billboard:** Most suited for particle systems, because it allows " "specifying :ref:`flipbook animation " "`." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:699 +#: ../../docs/tutorials/3d/standard_material_3d.rst:712 msgid "" "The **Particles Anim** section is only visible when the billboard mode is " "**Particle Billboard**." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:702 +#: ../../docs/tutorials/3d/standard_material_3d.rst:715 msgid "Billboard Keep Scale" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:704 +#: ../../docs/tutorials/3d/standard_material_3d.rst:717 msgid "Enables scaling a mesh in billboard mode." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:707 +#: ../../docs/tutorials/3d/standard_material_3d.rst:722 msgid "Grow" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:709 +#: ../../docs/tutorials/3d/standard_material_3d.rst:724 msgid "Grows the object vertices in the direction pointed by their normals:" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:713 +#: ../../docs/tutorials/3d/standard_material_3d.rst:728 msgid "" "This is commonly used to create cheap outlines. Add a second material pass, " "make it black and unshaded, reverse culling (Cull Front), and add some grow:" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:720 +#: ../../docs/tutorials/3d/standard_material_3d.rst:735 msgid "" "For Grow to work as expected, the mesh must have connected faces with shared " "vertices, or \"smooth shading\". If the mesh has disconnected faces with " @@ -39795,46 +40039,54 @@ msgid "" "using Grow." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:725 +#: ../../docs/tutorials/3d/standard_material_3d.rst:739 +msgid "" +"Note that in Godot 4.5 onwards, stencil buffer-based outlines are available " +"using the **Outline** :ref:`stencil mode " +"`. This can be used as an alternative to " +"Grow for outlines." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:744 #: ../../docs/tutorials/shaders/visual_shaders.rst:147 msgid "Transform" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:728 +#: ../../docs/tutorials/3d/standard_material_3d.rst:747 msgid "Fixed Size" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:730 +#: ../../docs/tutorials/3d/standard_material_3d.rst:749 msgid "" "This causes the object to be rendered at the same size no matter the " "distance. This is useful mostly for indicators (no depth test and high " "render priority) and some types of billboards." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:735 +#: ../../docs/tutorials/3d/standard_material_3d.rst:754 msgid "Use Point Size" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:737 +#: ../../docs/tutorials/3d/standard_material_3d.rst:756 msgid "" "This option is only effective when the geometry rendered is made of points " "(generally it's made of triangles when imported from 3D modeling software). " "If so, then those points can be resized (see below)." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:742 +#: ../../docs/tutorials/3d/standard_material_3d.rst:761 msgid "Point Size" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:744 +#: ../../docs/tutorials/3d/standard_material_3d.rst:763 msgid "When drawing points, specify the point size in pixels." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:747 +#: ../../docs/tutorials/3d/standard_material_3d.rst:766 msgid "Use Particle Trails" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:749 +#: ../../docs/tutorials/3d/standard_material_3d.rst:768 msgid "" "If true, enables parts of the shader required for GPUParticles3D trails to " "function. This also requires using a mesh with appropriate skinning, such as " @@ -39842,11 +40094,11 @@ msgid "" "used in GPUParticles3D meshes will break material rendering." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:755 +#: ../../docs/tutorials/3d/standard_material_3d.rst:774 msgid "Use Z Clip Scale" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:757 +#: ../../docs/tutorials/3d/standard_material_3d.rst:776 msgid "" "Scales the object being rendered towards the camera to avoid clipping into " "things like walls. This is intended to be used for objects that are fixed " @@ -39856,15 +40108,15 @@ msgid "" "Therefore, try to keep this setting as close to 1.0 as possible." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:765 +#: ../../docs/tutorials/3d/standard_material_3d.rst:784 msgid "Use FOV Override" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:767 +#: ../../docs/tutorials/3d/standard_material_3d.rst:786 msgid "Overrides the ``Camera3D``'s field of view angle (in degrees)." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:771 +#: ../../docs/tutorials/3d/standard_material_3d.rst:790 msgid "" "This behaves as if the field of view is set on a ``Camera3D`` with " "``Camera3D.keep_aspect`` set to ``Camera3D.KEEP_HEIGHT``. Additionally, it " @@ -39872,11 +40124,11 @@ msgid "" "setting is ignored." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:777 +#: ../../docs/tutorials/3d/standard_material_3d.rst:796 msgid "Proximity and Distance Fade" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:779 +#: ../../docs/tutorials/3d/standard_material_3d.rst:798 msgid "" "Godot allows materials to fade by proximity to each other as well as " "depending on the distance from the viewer. Proximity fade is useful for " @@ -39884,13 +40136,13 @@ msgid "" "the shores." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:785 +#: ../../docs/tutorials/3d/standard_material_3d.rst:804 msgid "" "Distance fade is useful for light shafts or indicators that are only present " "after a given distance." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:788 +#: ../../docs/tutorials/3d/standard_material_3d.rst:807 msgid "" "Keep in mind enabling proximity fade or distance fade with **Pixel Alpha** " "mode enables alpha blending. Alpha blending is more GPU-intensive and can " @@ -39898,14 +40150,14 @@ msgid "" "material features such as the ability to cast shadows." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:795 +#: ../../docs/tutorials/3d/standard_material_3d.rst:814 msgid "" "To hide a character when they get too close to the camera, consider using " "**Pixel Dither** or better, **Object Dither** (which is even faster than " "**Pixel Dither**)." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:799 +#: ../../docs/tutorials/3d/standard_material_3d.rst:818 msgid "" "**Pixel Alpha** mode: The actual transparency of a pixel of the object " "changes with distance to the camera. This is the most effect, but forces the " @@ -39913,34 +40165,75 @@ msgid "" "shadows)." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:805 +#: ../../docs/tutorials/3d/standard_material_3d.rst:824 msgid "" "**Pixel Dither** mode: What this does is sort of approximate the " "transparency by only having a fraction of the pixels rendered." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:810 +#: ../../docs/tutorials/3d/standard_material_3d.rst:829 msgid "" "**Object Dither** mode: Like the previous mode, but the calculated " "transparency is the same across the entire object's surface." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:816 +#: ../../docs/tutorials/3d/standard_material_3d.rst:837 +msgid "Stencil" +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:839 +msgid "" +"Since Godot 4.5, Godot allows materials to make use of the stencil buffer. " +"This feature is commonly used to create outlines and X-ray effects, which " +"can be useful to highlight objects, especially behind walls." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:843 +msgid "" +"The **Outline** and **X-Ray** modes assign a preconfigured stencil material " +"in the material's **Next Pass** property. The **Custom** mode can be used " +"for advanced effects." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:849 +msgid "" +"Materials that write to the stencil buffer are always drawn in the " +"transparent pass, so they are subject to the usual :ref:`transparency " +"limitations `." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:855 +msgid "" +"Like with the :ref:`Grow property `, for the " +"stencil outline to work as expected, the mesh must have connected faces with " +"shared vertices, or \"smooth shading\". If the mesh has disconnected faces " +"with unique vertices, or \"flat shading\", the mesh will appear to have gaps " +"when using a stencil outline." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:861 +msgid "" +"Stencil outlines render similarly to the Grow property, but won't look " +"identical in every scenario, especially when intersections with opaque " +"surfaces are involved." +msgstr "" + +#: ../../docs/tutorials/3d/standard_material_3d.rst:865 msgid "Material Settings" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:819 +#: ../../docs/tutorials/3d/standard_material_3d.rst:868 msgid "Render priority" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:821 +#: ../../docs/tutorials/3d/standard_material_3d.rst:870 msgid "" "The rendering order of objects can be changed, although this is mostly " "useful for transparent objects (or opaque objects that perform depth draw " "but no color draw, such as cracks on the floor)." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:825 +#: ../../docs/tutorials/3d/standard_material_3d.rst:874 msgid "" "Objects are sorted by an opaque/transparent queue, " "then :ref:`render_priority`, with " @@ -39948,30 +40241,30 @@ msgid "" "depth." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:828 +#: ../../docs/tutorials/3d/standard_material_3d.rst:877 msgid "" "Depth testing overrules priority. Priority alone cannot force opaque objects " "to be drawn over each other." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:831 +#: ../../docs/tutorials/3d/standard_material_3d.rst:880 msgid "Next Pass" msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:833 +#: ../../docs/tutorials/3d/standard_material_3d.rst:882 msgid "" "Setting :ref:`next_pass` on a material " "will cause an object to be rendered again with that next material." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:836 +#: ../../docs/tutorials/3d/standard_material_3d.rst:885 msgid "" "Materials are sorted by an opaque/transparent queue, " "then :ref:`render_priority`, with " "higher priority being drawn later." msgstr "" -#: ../../docs/tutorials/3d/standard_material_3d.rst:841 +#: ../../docs/tutorials/3d/standard_material_3d.rst:890 msgid "" "Depth will test equal between both materials unless the grow setting or " "other vertex transformations are used. Multiple transparent passes should " @@ -43707,27 +44000,19 @@ msgid "" "the attractor's cull mask." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:78 -msgid "" -"There is a `known issue `_ with GPU particle attractors that prevent the cull mask from " -"working properly in Godot 4.0. We will update the documentation as soon as " -"it is fixed." -msgstr "" - -#: ../../docs/tutorials/3d/particles/attractors.rst:83 +#: ../../docs/tutorials/3d/particles/attractors.rst:77 msgid "Box attractors" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:85 +#: ../../docs/tutorials/3d/particles/attractors.rst:79 msgid "Particle attractor box" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:89 +#: ../../docs/tutorials/3d/particles/attractors.rst:83 msgid "Box attractor in the node list" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:91 +#: ../../docs/tutorials/3d/particles/attractors.rst:85 msgid "" "Box attractors have a box-shaped influence region. You control their size " "with the ``Extents`` property. Box extents always measure half of the sides " @@ -43735,7 +44020,7 @@ msgid "" "influence region that is 2 meters wide on each side." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:95 +#: ../../docs/tutorials/3d/particles/attractors.rst:89 msgid "" "To create a box attractor, add a new child node to your scene and select " "``GPUParticlesAttractorBox3D`` from the list of available nodes. You can " @@ -43743,29 +44028,29 @@ msgid "" "effects." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:99 +#: ../../docs/tutorials/3d/particles/attractors.rst:93 msgid "Box attractor parts particle field" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:102 +#: ../../docs/tutorials/3d/particles/attractors.rst:96 msgid "" "A box attractor with a negative strength value parts a particle field as it " "moves through it." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:105 +#: ../../docs/tutorials/3d/particles/attractors.rst:99 msgid "Sphere attractors" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:107 +#: ../../docs/tutorials/3d/particles/attractors.rst:101 msgid "Particle attractor sphere" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:111 +#: ../../docs/tutorials/3d/particles/attractors.rst:105 msgid "Sphere attractor in the node list" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:113 +#: ../../docs/tutorials/3d/particles/attractors.rst:107 msgid "" "Sphere attractors have a spherical influence region. You control their size " "with the ``Radius`` property. While box attractors don't have to be perfect " @@ -43775,7 +44060,7 @@ msgid "" "``Node3D`` section." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:118 +#: ../../docs/tutorials/3d/particles/attractors.rst:112 msgid "" "To create a sphere attractor, add a new child node to your scene and select " "``GPUParticlesAttractorSphere3D`` from the list of available nodes. You can " @@ -43783,29 +44068,29 @@ msgid "" "effects." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:122 +#: ../../docs/tutorials/3d/particles/attractors.rst:116 msgid "Sphere attractor parts particle field" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:125 +#: ../../docs/tutorials/3d/particles/attractors.rst:119 msgid "" "A sphere attractor with a negative strength value parts a particle field as " "it moves through it." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:128 +#: ../../docs/tutorials/3d/particles/attractors.rst:122 msgid "Vector field attractors" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:130 +#: ../../docs/tutorials/3d/particles/attractors.rst:124 msgid "Particle attractor vector field" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:134 +#: ../../docs/tutorials/3d/particles/attractors.rst:128 msgid "Vector field attractor in the node list" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:136 +#: ../../docs/tutorials/3d/particles/attractors.rst:130 msgid "" "A vector field is a 3D area that contains vectors positioned on a grid. The " "grid density controls how many vectors there are and how far they're spread " @@ -43814,7 +44099,7 @@ msgid "" "and paths." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:141 +#: ../../docs/tutorials/3d/particles/attractors.rst:135 msgid "" "When particles interact with a vector field, their movement direction " "changes to match the nearest vector in the field. As a particle moves closer " @@ -43822,7 +44107,7 @@ msgid "" "direction. The particle's speed depends on the vector's length." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:145 +#: ../../docs/tutorials/3d/particles/attractors.rst:139 msgid "" "Like box attractors, vector field attractors have a box-shaped influence " "region. You control their size with the ``Extents`` property, where a value " @@ -43832,13 +44117,13 @@ msgid "" "color interpreted as the vector's direction and size." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:152 +#: ../../docs/tutorials/3d/particles/attractors.rst:146 msgid "" "When a texture is used as a vector field, there are two types of conversion " "you need to be aware of:" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:154 +#: ../../docs/tutorials/3d/particles/attractors.rst:148 msgid "" "The texture coordinates map to the attractor bounds. The image below shows " "which part of the texture corresponds to which part of the vector field " @@ -43847,7 +44132,7 @@ msgid "" "space, but up in Godot's world space." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:158 +#: ../../docs/tutorials/3d/particles/attractors.rst:152 msgid "" "The pixel color values map to direction vectors in space. The image below " "provides an overview. Since particles can move in two directions along each " @@ -43857,11 +44142,11 @@ msgid "" "``(R=0.5,G=0.5,B=0.5)`` results in no movement at all." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:164 +#: ../../docs/tutorials/3d/particles/attractors.rst:158 msgid "Mapping from texture to vector field" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:167 +#: ../../docs/tutorials/3d/particles/attractors.rst:161 msgid "" "To create a vector field attractor, add a new child node to your scene and " "select ``GPUParticlesAttractorVectorField3D`` from the list of available " @@ -43869,7 +44154,7 @@ msgid "" "node for more dynamic effects." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:173 +#: ../../docs/tutorials/3d/particles/attractors.rst:167 msgid "" "If you don't have external tools to create vector field textures, you can " "use a NoiseTexture3D with a Color Ramp attached as a vector field texture. " @@ -43877,11 +44162,11 @@ msgid "" "affected by the vector field." msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:178 +#: ../../docs/tutorials/3d/particles/attractors.rst:172 msgid "Vector field attractor in a field of particles" msgstr "" -#: ../../docs/tutorials/3d/particles/attractors.rst:181 +#: ../../docs/tutorials/3d/particles/attractors.rst:175 msgid "" "Two particle systems are affected by the same vector field " "attractor. :download:`Click here to download the 3D texture `_ with GPU particle collision that prevent the cull mask from working " -"properly in Godot 4.0. We will update the documentation as soon as it is " -"fixed." -msgstr "" - -#: ../../docs/tutorials/3d/particles/collision.rst:38 +#: ../../docs/tutorials/3d/particles/collision.rst:32 msgid "Box collision" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:40 +#: ../../docs/tutorials/3d/particles/collision.rst:34 msgid "Particle collision box" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:44 +#: ../../docs/tutorials/3d/particles/collision.rst:38 msgid "Box collision in the node list" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:46 +#: ../../docs/tutorials/3d/particles/collision.rst:40 msgid "" "Box collision nodes are shaped like a solid, rectangular box. You control " "their size with the ``Extents`` property. Box extents always measure half of " @@ -43958,7 +44235,7 @@ msgid "" "simulating floor and wall geometry that particles should collide against." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:51 +#: ../../docs/tutorials/3d/particles/collision.rst:45 msgid "" "To create a box collision node, add a new child node to your scene and " "select ``GPUParticlesCollisionBox3D`` from the list of available nodes. You " @@ -43966,27 +44243,27 @@ msgid "" "effects." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:55 +#: ../../docs/tutorials/3d/particles/collision.rst:49 msgid "Box collision with particle systems" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:58 +#: ../../docs/tutorials/3d/particles/collision.rst:52 msgid "Two particle systems collide with a box collision node" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:61 +#: ../../docs/tutorials/3d/particles/collision.rst:55 msgid "Sphere collision" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:63 +#: ../../docs/tutorials/3d/particles/collision.rst:57 msgid "Particle collision sphere" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:67 +#: ../../docs/tutorials/3d/particles/collision.rst:61 msgid "Sphere collision in the node list" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:69 +#: ../../docs/tutorials/3d/particles/collision.rst:63 msgid "" "Sphere collision nodes are shaped like a solid sphere. The ``Radius`` " "property controls the size of the sphere. While box collision nodes don't " @@ -43995,7 +44272,7 @@ msgid "" "``Scale`` property in the ``Node3D`` section." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:74 +#: ../../docs/tutorials/3d/particles/collision.rst:68 msgid "" "To create a sphere collision node, add a new child node to your scene and " "select ``GPUParticlesCollisionSphere3D`` from the list of available nodes. " @@ -44003,27 +44280,27 @@ msgid "" "dynamic effects." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:78 +#: ../../docs/tutorials/3d/particles/collision.rst:72 msgid "Sphere collision with particle systems" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:81 +#: ../../docs/tutorials/3d/particles/collision.rst:75 msgid "Two particle systems collide with a sphere collision node" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:84 +#: ../../docs/tutorials/3d/particles/collision.rst:78 msgid "Height field collision" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:86 +#: ../../docs/tutorials/3d/particles/collision.rst:80 msgid "Particle collision height field" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:90 +#: ../../docs/tutorials/3d/particles/collision.rst:84 msgid "Height field collision in the node list" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:92 +#: ../../docs/tutorials/3d/particles/collision.rst:86 msgid "" "Height field particle collision is very useful for large outdoor areas that " "need to collide with particles. At runtime, the node creates a height field " @@ -44034,14 +44311,14 @@ msgid "" "density offer a wide range of performance adjustments." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:98 +#: ../../docs/tutorials/3d/particles/collision.rst:92 msgid "" "To create a height field collision node, add a new child node to your scene " "and select ``GPUParticlesCollisionHeightField3D`` from the list of available " "nodes." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:101 +#: ../../docs/tutorials/3d/particles/collision.rst:95 msgid "" "A height field collision node is shaped like a box. The ``Extents`` property " "controls its size. Extents always measure half of the sides of its bounds, " @@ -44050,7 +44327,7 @@ msgid "" "field creation." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:105 +#: ../../docs/tutorials/3d/particles/collision.rst:99 msgid "" "The ``Resolution`` property controls how detailed the height field is. A " "lower resolution performs faster at the cost of accuracy. If the height " @@ -44059,16 +44336,16 @@ msgid "" "ignore some smaller meshes completely." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:109 +#: ../../docs/tutorials/3d/particles/collision.rst:103 msgid "Height field resolutions" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:112 +#: ../../docs/tutorials/3d/particles/collision.rst:106 msgid "" "At low resolutions, height field collision misses some finer details (left)" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:114 +#: ../../docs/tutorials/3d/particles/collision.rst:108 msgid "" "The ``Update Mode`` property controls when the height field is recreated " "from the meshes within its bounds. Set it to ``When Moved`` to make it " @@ -44079,14 +44356,14 @@ msgid "" "only be used when necessary." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:122 +#: ../../docs/tutorials/3d/particles/collision.rst:116 msgid "" "It's important to remember that when ``Update Mode`` is set to ``When " "Moved``, it is the *height field node* whose movement triggers an update. " "The height field is not updated when one of the meshes inside it moves." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:125 +#: ../../docs/tutorials/3d/particles/collision.rst:119 msgid "" "The ``Follow Camera Enabled`` property makes the height field follow the " "current camera when enabled. It will update whenever the camera moves. This " @@ -44095,19 +44372,19 @@ msgid "" "sight or too far away." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:130 +#: ../../docs/tutorials/3d/particles/collision.rst:124 msgid "SDF collision" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:132 +#: ../../docs/tutorials/3d/particles/collision.rst:126 msgid "Particle collision SDF" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:136 +#: ../../docs/tutorials/3d/particles/collision.rst:130 msgid "SDF collision in the node list" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:138 +#: ../../docs/tutorials/3d/particles/collision.rst:132 msgid "" "SDF collision nodes create a `signed distance field ` must overlap with the collider's AABB. " @@ -44194,13 +44471,13 @@ msgid "" "editor viewport." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:184 +#: ../../docs/tutorials/3d/particles/collision.rst:178 msgid "" "If the particles move fast and colliders are thin. There are two solutions " "for this:" msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:186 +#: ../../docs/tutorials/3d/particles/collision.rst:180 msgid "" "Make the colliders thicker. For instance, if particles cannot get below a " "solid floor, you could make the collider representing the floor thicker than " @@ -44209,7 +44486,7 @@ msgid "" "collision." msgstr "" -#: ../../docs/tutorials/3d/particles/collision.rst:191 +#: ../../docs/tutorials/3d/particles/collision.rst:185 msgid "" "Increased ``Fixed FPS`` in the GPUParticles3D node, which will perform " "collision checks more often. This comes at a performance cost, so avoid " @@ -44883,7 +45160,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/3d/global_illumination/introduction_to_global_illumination.rst:321 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:211 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:208 msgid "good" msgstr "" @@ -44975,7 +45252,7 @@ msgid "**LightmapGI:** |bad| Baked, and therefore not real-time." msgstr "" #: ../../docs/tutorials/3d/global_illumination/introduction_to_global_illumination.rst:325 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:209 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:206 msgid "bad" msgstr "" @@ -45389,20 +45666,52 @@ msgid "" "significantly during gameplay." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:124 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:126 +msgid "" +"For meshes with the **Static** bake mode, the VoxelGI baking system is not " +"able to make use of custom shaders (:ref:`class_ShaderMaterial`). These " +"meshes will be considered to be pure black, only acting as light blockers. " +"You can make VoxelGI take custom shaders into account by using the " +"**Dynamic** bake mode for these objects, but this has a performance cost." +msgstr "" + +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:132 +msgid "" +"For :ref:`class_BaseMaterial3D`, some properties are currently ignored " +"during baking. This can impact visuals if the material's albedo or emission " +"texture was designed around using certain UV mappings:" +msgstr "" + +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:136 +msgid "**UV1 > Offset**" +msgstr "" + +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:137 +msgid "**UV1 > Scale**" +msgstr "" + +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:138 +msgid "**UV1 > Triplanar**" +msgstr "" + +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:139 +msgid "**Emission > On UV2**" +msgstr "" + +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:141 #: ../../docs/tutorials/3d/global_illumination/using_sdfgi.rst:142 msgid "" "Additionally, there are 3 bake modes available for lights " "(DirectionalLight3D, OmniLight3D and SpotLight3D):" msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:127 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:144 msgid "" "**Disabled:** The light won't be taken into account for VoxelGI baking. The " "light won't contribute indirect lighting to the scene." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:129 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:146 msgid "" "**Static:** The light will be taken into account for VoxelGI baking. The " "light will contribute indirect lighting to the scene. If the light is " @@ -45411,7 +45720,7 @@ msgid "" "lighting." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:133 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:150 msgid "" "**Dynamic (default):** The light won't be taken into account for VoxelGI " "baking, but it will still contribute indirect lighting to the scene in real-" @@ -45420,7 +45729,7 @@ msgid "" "gameplay." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:140 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:157 #: ../../docs/tutorials/3d/global_illumination/using_sdfgi.rst:159 msgid "" "The amount of indirect energy emitted by a light depends on its color, " @@ -45430,38 +45739,38 @@ msgid "" "inspector." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:147 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:164 #: ../../docs/tutorials/3d/global_illumination/using_sdfgi.rst:166 msgid "" "See :ref:`doc_introduction_to_global_illumination_gi_mode_recommendations` " "for general usage recommendations." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:151 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:168 msgid "Adjusting VoxelGI performance and quality" msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:153 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:170 msgid "" "Since VoxelGI is relatively demanding, it will perform best on systems with " "recent dedicated GPUs. On older dedicated GPUs and integrated graphics, " "tweaking the settings is necessary to achieve reasonable performance." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:157 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:174 msgid "" "In the Project Settings' **Rendering > Global Illumination** section, " "VoxelGI quality can also be adjusted in two ways:" msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:160 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:177 msgid "" "**Voxel Gi > Quality:** If set to **Low** instead of **High**, voxel cone " "tracing will only use 4 taps instead of 6. This speeds up rendering at the " "cost of less pronounced ambient occlusion." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:163 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:180 msgid "" "**Gi > Use Half Resolution:** If enabled, both VoxelGI and SDFGI will have " "their GI buffer rendering at halved resolution. For instance, when rendering " @@ -45470,36 +45779,36 @@ msgid "" "aliasing around thin details." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:169 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:186 msgid "" "Note that the **Advanced** toggle must be enabled in the project settings " "dialog for the above settings to be visible." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:172 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:189 msgid "" "Additionally, VoxelGI can be disabled entirely by hiding the VoxelGI node. " "This can be used for comparison purposes or to improve performance on low-" "end systems." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:176 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:193 msgid "Reducing VoxelGI light leaks and artifacts" msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:178 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:195 msgid "" "After baking VoxelGI, you may notice indirect light is leaking at some spots " "in your level geometry. This can be remedied in several ways:" msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:181 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:198 msgid "" "For both light leaking and artifacts, try moving or rotating the VoxelGI " "node then bake it again." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:183 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:200 msgid "" "To combat light leaking in general, ensure your level geometry is fully " "sealed. This is best done in the 3D modeling software used to design the " @@ -45507,7 +45816,7 @@ msgid "" "mode set to **Static** can also be used." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:187 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:204 msgid "" "To combat light leaking with thin geometry, it's recommended to make the " "geometry in question thicker. If this is not possible, then add a primitive " @@ -45518,7 +45827,7 @@ msgid "" "geometry." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:193 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:210 msgid "" "To combat artifacts that can appear on reflective surfaces, try increasing " "**Bias** and/or **Normal Bias** in the VoxelGIData resource as described " @@ -45526,7 +45835,7 @@ msgid "" "more pronounced." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:197 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:214 msgid "" "If you notice VoxelGI nodes popping in and out of existence as the camera " "moves, this is most likely because the engine is rendering too many VoxelGI " @@ -45535,7 +45844,7 @@ msgid "" "will start flickering." msgstr "" -#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:203 +#: ../../docs/tutorials/3d/global_illumination/using_voxel_gi.rst:220 msgid "" "Additionally, for performance reasons, Godot can only blend between 2 " "VoxelGI nodes at a given pixel on the screen. If you have more than 2 " @@ -45550,7 +45859,7 @@ msgstr "" #: ../../docs/tutorials/3d/global_illumination/using_sdfgi.rst:6 msgid "" "Signed distance field global illumination (SDFGI) is a novel technique " -"available in Godot 4.0. It provides semi-real-time global illumination that " +"available in Godot. It provides semi-real-time global illumination that " "scales to any world size and works with procedurally generated levels." msgstr "" @@ -45947,9 +46256,8 @@ msgid "" "VoxelGI can be done in a matter of seconds, baking lightmaps can take " "several minutes if not more. This can slow down iteration speed " "significantly, so it is recommended to bake lightmaps only when you actually " -"need to see changes in lighting. Since Godot 4.0, lightmaps are baked on the " -"GPU, making light baking faster if you have a mid-range or high-end " -"dedicated GPU." +"need to see changes in lighting. Lightmaps are baked on the GPU, making " +"light baking faster if you have a mid-range or high-end dedicated GPU." msgstr "" #: ../../docs/tutorials/3d/global_illumination/using_lightmap_gi.rst:27 @@ -46723,7 +47031,7 @@ msgid "" "JNLM is the default denoising method and is included in Godot. It uses a " "simple but efficient denoising algorithm known as *non-local means*. JNLM " "runs on the GPU using a compute shader, and is compatible with any GPU that " -"can run Godot 4's Vulkan-based rendering methods. No additional setup is " +"can run Godot 4's RenderingDevice-based renderers. No additional setup is " "required." msgstr "" @@ -48007,10 +48315,9 @@ msgid "Screen-Space Reflections (SSR)" msgstr "" #: ../../docs/tutorials/3d/environment_and_post_processing.rst:384 -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:426 -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:503 -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:549 -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:874 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:512 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:558 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:883 msgid "" "*This feature is only available when using the Forward+ renderer, not Mobile " "or Compatibility.*" @@ -48086,6 +48393,12 @@ msgstr "" msgid "Screen-Space Ambient Occlusion (SSAO)" msgstr "" +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:426 +msgid "" +"*This feature is only available when using the Forward+ and Compatibility " +"renderers, not Mobile.*" +msgstr "" + #: ../../docs/tutorials/3d/environment_and_post_processing.rst:429 msgid "" "As mentioned in the **Ambient** section, areas where light from light nodes " @@ -48200,13 +48513,26 @@ msgid "" "make the SSAO effect visible in areas darkened by AO textures." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:501 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:500 +msgid "" +"Since Godot 4.6, a simplified version of SSAO is available in the " +"Compatibility renderer. This implementation has a different look, but should " +"perform significantly better on low-end devices compared to SSAO in Forward+." +msgstr "" + +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:504 +msgid "" +"When using the Compatibility renderer, only the **Radius** and **Intensity** " +"parameters can be adjusted." +msgstr "" + +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:510 #: ../../docs/tutorials/rendering/renderers.rst:240 #: ../../docs/tutorials/rendering/renderers.rst:267 msgid "Screen-Space Indirect Lighting (SSIL)" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:506 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:515 msgid "" ":abbr:`SSIL (Screen-Space Indirect Lighting)` provides indirect lighting for " "small details or dynamic geometry that other global illumination techniques " @@ -48215,7 +48541,7 @@ msgid "" "its own, the effect may not be that noticeable, which is intended." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:512 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:521 msgid "" "Instead, :abbr:`SSIL (Screen-Space Indirect Lighting)` is meant to be used " "as a *complement* to other global illumination techniques such as VoxelGI, " @@ -48224,7 +48550,7 @@ msgid "" "detail." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:517 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:526 msgid "" "This feature only provides indirect lighting. It is not a full global " "illumination solution. This makes it different from screen-space global " @@ -48234,13 +48560,13 @@ msgid "" "greater visual quality (at the cost of performance)." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:524 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:533 msgid "" "Tweaking :abbr:`SSIL (Screen-Space Indirect Lighting)` is possible with " "several parameters:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:526 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:535 msgid "" "**Radius:** The distance that bounced lighting can travel when using the " "screen space indirect lighting effect. A larger value will result in light " @@ -48248,13 +48574,13 @@ msgid "" "which look like long spikes surrounding light sources." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:530 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:539 msgid "" "**Intensity:** The brightness multiplier for the screen-space indirect " "lighting effect. A higher value will result in brighter light." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:532 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:541 msgid "" "**Sharpness:** The amount that the screen-space indirect lighting effect is " "allowed to blur over the edges of objects. Setting too high will result in " @@ -48262,7 +48588,7 @@ msgid "" "appear blurry." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:536 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:545 msgid "" "**Normal Rejection:** Amount of normal rejection used when calculating " "screen-space indirect lighting. Normal rejection uses the normal of a given " @@ -48273,13 +48599,13 @@ msgid "" "objects that emit light from faces that cannot be seen from the camera." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:547 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:556 #: ../../docs/tutorials/rendering/renderers.rst:243 #: ../../docs/tutorials/rendering/renderers.rst:270 msgid "Signed Distance Field Global Illumination (SDFGI)" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:552 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:561 msgid "" "Signed distance field global illumination (SDFGI) is a form of real-time " "global illumination. It is not a screen-space effect, which means it can " @@ -48287,18 +48613,18 @@ msgid "" "(Screen-Space Indirect Lighting)`)." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:558 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:567 msgid "" "See :ref:`doc_using_sdfgi` for instructions on setting up this global " "illumination technique." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:566 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:575 #: ../../docs/tutorials/rendering/renderers.rst:274 msgid "Glow" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:570 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:579 msgid "" "When using the Compatibility rendering method, glow uses a different " "implementation with some properties being unavailable and hidden from the " @@ -48306,26 +48632,26 @@ msgid "" "**Mix**, **Map**, and **Map Strength**." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:575 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:584 msgid "" "This implementation is optimized to run on low-end devices and is less " "flexible as a result." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:578 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:587 msgid "" "In photography and film, when light amount exceeds the maximum *luminance* " "(brightness) supported by the media, it generally bleeds outwards to darker " "regions of the image. This is simulated in Godot with the **Glow** effect." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:584 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:593 msgid "" "By default, even if the effect is enabled, it will be weak or invisible. One " "of two conditions need to happen for it to actually show:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:587 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:596 msgid "" "The light in a pixel surpasses the **HDR Threshold** (where 0 is all light " "surpasses it, and 1.0 is light over the tonemapper **White** value). " @@ -48335,27 +48661,27 @@ msgid "" "threshold." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:596 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:605 msgid "" "The **Bloom** property has a value greater than ``0.0``. As it increases, it " "sends the whole screen to the glow processor at higher amounts." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:601 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:610 msgid "Both will cause the light to start bleeding out of the brighter areas." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:603 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:612 msgid "Once glow is visible, it can be controlled with a few extra parameters:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:605 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:614 msgid "" "**Intensity** is an overall scale for the effect, it can be made stronger or " "weaker (``0.0`` removes it)." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:607 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:616 msgid "" "**Strength** is how strong the gaussian filter kernel is processed. Greater " "values make the filter saturate and expand outwards. In general, changing " @@ -48363,37 +48689,37 @@ msgid "" "**Levels**." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:611 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:620 msgid "The **Blend Mode** of the effect can also be changed:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:613 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:622 msgid "" "**Additive** is the strongest one, as it only adds the glow effect over the " "image with no blending involved. In general, it's too strong to be used, but " "can look good with low-intensity **Bloom** (produces a dream-like effect)." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:616 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:625 msgid "" "**Screen** ensures glow never brightens more than itself and it works great " "as an all around." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:618 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:627 msgid "" "**Softlight** is the default and weakest one, producing only a subtle color " "disturbance around the objects. This mode works best on dark scenes." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:620 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:629 msgid "" "**Replace** can be used to :ref:`blur the whole screen " "` or " "debug the effect. It only shows the glow effect without the image below." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:623 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:632 msgid "" "**Mix** mixes the glow effect with the main image. This can be used for " "greater artistic control. The mix factor is controlled by the **Mix** " @@ -48402,20 +48728,20 @@ msgid "" "**Bloom** is increased." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:629 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:638 msgid "" "To change the glow effect size and shape, Godot provides **Levels**. Smaller " "levels are strong glows that appear around objects, while large levels are " "hazy glows covering the whole screen:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:635 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:644 msgid "" "The real strength of this system, though, is to combine levels to create " "more interesting glow patterns:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:640 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:649 msgid "" "Finally, the glow effect can be controlled using a *glow map*, which is a " "texture that determines how bright glow should be on each part of the " @@ -48425,21 +48751,21 @@ msgid "" "as 16:9) is recommended to avoid visible distortion." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:647 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:656 msgid "There are 2 main use cases for a glow map texture:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:649 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:658 msgid "Create a \"lens dirt\" effect using a dirt pattern texture." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:650 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:659 msgid "" "Make glow less strong on specific parts of the screen by using a gradient " "texture." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:654 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:663 msgid "" "By default, glow uses a bicubic scaling filter on desktop platforms and a " "bilinear scaling filter on mobile platforms. The bicubic scaling filter " @@ -48451,38 +48777,38 @@ msgid "" "implementation." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:668 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:677 msgid "Using glow in 2D" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:670 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:679 msgid "There are 2 ways to use glow in 2D:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:672 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:681 msgid "" "Since Godot 4.2, you can enable HDR for 2D rendering when using the Forward+ " "and Mobile rendering methods. This has a performance cost, but it allows for " "a greater dynamic range. This also allows you to control which objects glow " "using their individual **Modulate** or **Self Modulate** properties (use the " -"RAW mode in the color picker). Enabling HDR can also reduce banding in the " -"2D rendering output." +"Intensity slider in the color picker). Enabling HDR can also reduce banding " +"in the 2D rendering output." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:679 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:688 msgid "" "To enable HDR in 2D, open the Project Settings, enable :ref:`Rendering > " "Viewport > HDR 2D` " "then restart the editor." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:683 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:692 msgid "" "If you want to maximize performance, you can leave HDR disabled for 2D " "rendering. However, you will have less control on which objects glow." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:686 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:695 msgid "" "Enable glow, set the environment background mode to **Canvas** then decrease " "**Glow HDR Threshold** so that pixels that are not overbright will still " @@ -48492,18 +48818,18 @@ msgid "" "Environment resource." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:693 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:702 msgid "Example of using glow in a 2D scene" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:697 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:706 msgid "" "Example of using glow in a 2D scene. HDR 2D is enabled, while coins and the " "bullet have their **Modulate** property increased to overbright values using " -"the RAW mode in the color picker." +"the Intensity slider in the color picker." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:703 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:712 msgid "" "The 2D renderer renders in linear color space if the :ref:`Rendering > " "Viewport > HDR 2D` " @@ -48512,14 +48838,14 @@ msgid "" "shaders. If this is not done, the texture will appear washed out." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:709 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:718 msgid "" "If 2D HDR is disabled, ``source_color`` will keep working correctly in " "``canvas_item`` shaders, so it's recommend to use it when relevant either " "way." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:713 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:722 msgid "" "Using linear color space also means that alpha blending will change. Sprites " "with low opacity values generally become more visible, and font rendering " @@ -48527,11 +48853,11 @@ msgid "" "becoming more visible. This also affects the editor's own rendering." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:721 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:730 msgid "Using glow to blur the screen" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:723 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:732 msgid "" "Glow can be used to blur the whole viewport, which is useful for background " "blur when a menu is open. Only 3D rendering will be affected unless the " @@ -48542,11 +48868,11 @@ msgid "" "property of the Environment resource." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:730 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:739 msgid "To use glow as a blurring solution:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:732 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:741 msgid "" "Enable **Normalized** and adjust levels according to preference. Increasing " "higher level indices will result in a more blurred image. It's recommended " @@ -48555,45 +48881,45 @@ msgid "" "depending on viewport resolution." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:737 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:746 msgid "Set **Intensity** to ``1.0`` and **Bloom** to ``1.0``." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:738 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:747 msgid "Set the blend mode to **Replace** and **HDR Luminance Cap** to ``1.0``." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:740 -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:744 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:749 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:753 msgid "Example of using glow to blur the 2D rendering in the menu's background" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:747 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:756 #: ../../docs/tutorials/rendering/renderers.rst:276 msgid "Adjustments" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:749 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:758 msgid "" "At the end of processing, Godot offers the possibility to do some standard " "image adjustments." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:754 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:763 msgid "**Basic BCS adjustments**" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:756 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:765 msgid "" "The first adjustment is being able to change the typical **Brightness**, " "**Contrast**, and **Saturation** properties:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:761 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:770 msgid "**Color correction using a 1D gradient**" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:763 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:772 msgid "" "The second adjustment is by supplying a color correction gradient. This can " "be done by assigning a GradientTexture1D resource to the **Color " @@ -48603,22 +48929,22 @@ msgid "" "source image." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:769 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:778 msgid "" "A linear black-to-white gradient like the following one will produce no " "effect:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:773 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:782 msgid "" "But creating custom ones will allow to map each channel to a different color:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:777 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:786 msgid "**Color correction using a 3D LUT**" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:779 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:788 msgid "" "A 3D look-up-texture (LUT) can also be used for color correction. This is a " "special texture used to modify each color channel separately from one " @@ -48629,13 +48955,13 @@ msgid "" "interpolation)." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:786 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:795 msgid "" "For this to work, the look-up texture's import mode must be set to Texture3D " "in the Import dock (instead of being imported as a regular Texture2D):" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:791 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:800 msgid "" "Make sure to configure the number of horizontal and vertical slices to " "import as well. If you don't do this, the LUT texture will not affect the " @@ -48644,13 +48970,13 @@ msgid "" "inspector to flip through the texture's layers." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:797 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:806 msgid "" "You can use this neutral 33×33×33 LUT template as a base (right-click and " "choose **Save as…**):" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:802 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:811 msgid "" "With the above LUT template, after changing its import mode to " "**Texture3D**, set its number of **Horizontal** slices to ``33`` in the " @@ -48659,7 +48985,7 @@ msgid "" "this texture is designed to be a neutral starting point." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:808 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:817 msgid "" "This LUT template can be modified in an image editor to provide a different " "mood to the image. A common workflow is to place the LUT image next to a " @@ -48669,87 +48995,87 @@ msgid "" "real-time." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:814 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:823 msgid "" "For example, modifying the LUT template in an image editor to give it a " "\"sepia\" look results in the image on the right:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:821 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:830 msgid "" "Adjustments and color correction are applied *after* tonemapping. This means " "the tonemapping properties defined above still have an effect when " "adjustments are enabled." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:826 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:835 msgid "Camera attribute options" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:829 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:838 msgid "Depth of Field / Far Blur" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:831 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:840 msgid "" "This effect simulates focal distance on cameras. It blurs objects behind a " "given range. It has an initial **Distance** with a **Transition** region (in " "world units):" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:837 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:846 msgid "" "The **Amount** parameter controls the amount of blur. For larger blurs, " "tweaking the depth of field quality in the advanced project settings may be " "needed to avoid artifacts." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:842 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:851 msgid "Depth of Field / Near Blur" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:844 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:853 msgid "" "This effect simulates focal distance on cameras. It blurs objects close to " "the camera (acts in the opposite direction as far blur). It has an initial " "**Distance** with a **Transition** region (in world units):" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:850 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:859 msgid "" "The **Amount** parameter controls the amount of blur. For larger blurs, " "tweaking the **Quality** may be needed in order to avoid artifacts." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:853 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:862 msgid "" "It is common to use both blurs together to focus the viewer's attention on a " "given object, or create a so-called `\"tilt shift\" effect `__." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:861 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:870 msgid "" "When using CameraAttributesPhysical instead of CameraAttributesPractical, " "depth of field is automatically computed from the camera attributes' focus " "distance, focal length, and aperture." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:866 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:875 msgid "Exposure" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:868 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:877 msgid "" "This multiplies the overall scene brightness visible from the camera. Higher " "values result in a visually brighter scene." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:872 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:881 msgid "Auto Exposure" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:877 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:886 msgid "" "Even though, in most cases, lighting and texturing are heavily artist " "controlled, Godot supports a basic high dynamic range implementation with " @@ -48759,14 +49085,14 @@ msgid "" "and dark locations and their different amounts of light." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:886 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:895 msgid "" "Auto exposure needs to evaluate the scene's brightness every frame, which " "has a moderate performance cost. Therefore, it's recommended to leave Auto " "Exposure disabled if it doesn't make much of a difference in your scene." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:892 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:901 msgid "" "The simplest way to use auto exposure is to make sure outdoor lights (or " "other strong lights) have energy beyond 1.0. This is done by tweaking their " @@ -48776,7 +49102,7 @@ msgid "" "simulate indoor-outdoor conditions." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:898 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:907 msgid "" "By combining Auto Exposure " "with :ref:`doc_environment_and_post_processing_glow` post-processing, pixels " @@ -48784,19 +49110,19 @@ msgid "" "the typical bloom effect in photography." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:904 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:913 msgid "" "The user-controllable values in the Auto Exposure section come with sensible " "defaults, but you can still tweak them:" msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:909 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:918 msgid "" "**Scale:** Value to scale the lighting. Higher values produce brighter " "images, and lower values produce darker ones." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:911 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:920 msgid "" "**Min Sensitivity / Min Exposure Value:** Minimum luminance that auto " "exposure will aim to adjust for (in ISO when using " @@ -48804,21 +49130,21 @@ msgid "" "Luminance is the average of the light in all the pixels of the screen." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:915 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:924 msgid "" "**Max Sensitivity / Max Exposure Value:** Maximum luminance that auto " "exposure will aim to adjust for (in ISO when using " "CameraAttributesPractical, or in EV100 when using CameraAttributesPhysical)." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:918 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:927 msgid "" "**Speed:** Speed at which luminance corrects itself. The higher the value, " "the faster luminance correction happens. High values may be more suited to " "fast-paced games, but can be distracting in some scenarios." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:922 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:931 msgid "" "When using CameraAttributesPractical, exposure is set using *sensitivity* " "defined in ISO instead of an exposure value in EV100. Typical ISO values are " @@ -48827,7 +49153,7 @@ msgid "" "800." msgstr "" -#: ../../docs/tutorials/3d/environment_and_post_processing.rst:929 +#: ../../docs/tutorials/3d/environment_and_post_processing.rst:938 msgid "" "See :ref:`doc_physical_light_and_camera_units` if you wish to use real world " "units to configure your camera's exposure, field of view and depth of field." @@ -49046,7 +49372,7 @@ msgid "" "This can be done by setting volumetric fog density to the lowest permitted " "value *greater than zero* (``0.0001``), then increasing the **Volumetric Fog " "Energy** property on lights to much higher values than the default to " -"compensate. Values between ``10000`` and ``100000`` usually work well for " +"compensate. Values between ``200.0`` and ``5000.0`` usually work well for " "this." msgstr "" @@ -50562,7 +50888,8 @@ msgstr "" #: ../../docs/tutorials/3d/visibility_ranges.rst:84 msgid "" "**Begin:** The instance will be hidden when the camera is closer to the " -"instance's *origin* than this value (in 3D units)." +"*center of the instance's AABB* (axis-aligned bounding box) than this value " +"(in 3D units)." msgstr "" #: ../../docs/tutorials/3d/visibility_ranges.rst:86 @@ -50575,7 +50902,7 @@ msgstr "" #: ../../docs/tutorials/3d/visibility_ranges.rst:89 msgid "" "**End:** The instance will be hidden when the camera is further away from " -"the instance's *origin* than this value (in 3D units)." +"the *center of the instance's AABB* than this value (in 3D units)." msgstr "" #: ../../docs/tutorials/3d/visibility_ranges.rst:91 @@ -53408,6 +53735,7 @@ msgid "Let's add a spring arm camera setup to the platformer demo." msgstr "" #: ../../docs/tutorials/3d/spring_arm.rst:62 +#: ../../docs/tutorials/physics/ragdoll_system.rst:16 msgid "" "You can download the Platformer 3D demo on `GitHub `_ or using the " @@ -55323,17 +55651,15 @@ msgstr "" #: ../../docs/tutorials/animation/animation_tree.rst:15 msgid "" -":ref:`AnimationTree ` is a new node introduced in Godot " -"3.1 to deal with advanced transitions. It replaces the ancient " -"``AnimationTreePlayer``, while adding a huge amount of features and " -"flexibility." +":ref:`AnimationTree ` is a node designed to deal with " +"advanced transitions." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:19 +#: ../../docs/tutorials/animation/animation_tree.rst:18 msgid "AnimationTree and AnimationPlayer" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:21 +#: ../../docs/tutorials/animation/animation_tree.rst:20 msgid "" "Before starting, know that an ``AnimationTree`` node does not contain its " "own animations. Instead, it uses animations contained in an " @@ -55342,7 +55668,7 @@ msgid "" "playback." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:25 +#: ../../docs/tutorials/animation/animation_tree.rst:24 msgid "" "``AnimationPlayer`` and ``AnimationTree`` can be used in both 2D and 3D " "scenes. When importing 3D scenes and their animations, you can use `name " @@ -55357,150 +55683,150 @@ msgid "" "was created in the imported scene." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:31 +#: ../../docs/tutorials/animation/animation_tree.rst:30 msgid "" "This is how it's done in the `Third Person Shooter demo `_, for reference:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:35 +#: ../../docs/tutorials/animation/animation_tree.rst:34 msgid "" "A new scene was created for the player with a ``CharacterBody3D`` as root. " "Inside this scene, the original ``.dae`` (Collada) file was instantiated and " "an ``AnimationTree`` node was created." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:39 +#: ../../docs/tutorials/animation/animation_tree.rst:38 msgid "Creating a tree" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:41 +#: ../../docs/tutorials/animation/animation_tree.rst:40 msgid "" "To use an ``AnimationTree``, you have to set a root node. An animation root " "node is a class that contains and evaluates sub-nodes and outputs an " "animation. There are 3 types of sub-nodes:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:44 +#: ../../docs/tutorials/animation/animation_tree.rst:43 msgid "" "Animation nodes, which reference an animation from the linked " "``AnimationPlayer``." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:45 +#: ../../docs/tutorials/animation/animation_tree.rst:44 msgid "" "Animation Root nodes, which are used to blend sub-nodes and can be nested." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:46 +#: ../../docs/tutorials/animation/animation_tree.rst:45 msgid "" "Animation Blend nodes, which are used in an ``AnimationNodeBlendTree``, a 2D " "graph of nodes. Blend nodes take multiple input ports and give one output " "port." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:48 +#: ../../docs/tutorials/animation/animation_tree.rst:47 msgid "A few types of root nodes are available:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:52 +#: ../../docs/tutorials/animation/animation_tree.rst:51 msgid "" "``AnimationNodeAnimation``: Selects an animation from the list and plays it. " "This is the simplest root node, and generally not used as a root." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:53 +#: ../../docs/tutorials/animation/animation_tree.rst:52 msgid "" "``AnimationNodeBlendTree``: Contains multiple nodes as children in a graph. " "Many blend nodes are available, such as mix, blend2, blend3, one shot, etc." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:54 +#: ../../docs/tutorials/animation/animation_tree.rst:53 msgid "" "``AnimationNodeBlendSpace1D``: Allows linear blending between two animation " "nodes. Control the blend position in a 1D blend space to mix between " "animations." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:55 +#: ../../docs/tutorials/animation/animation_tree.rst:54 msgid "" "``AnimationNodeBlendSpace2D``: Allows linear blending between three " "animation nodes. Control the blend position in a 2D blend space to mix " "between animations." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:56 +#: ../../docs/tutorials/animation/animation_tree.rst:55 msgid "" "``AnimationNodeStateMachine``: Contains multiple nodes as children in a " "graph. Each node is used as a state, with multiple functions used to " "alternate between states." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:59 +#: ../../docs/tutorials/animation/animation_tree.rst:58 msgid "Blend tree" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:61 +#: ../../docs/tutorials/animation/animation_tree.rst:60 msgid "" "When you make an ``AnimationNodeBlendTree``, you get an empty 2d graph in " "the bottom panel, under the AnimationTree tab. It contains only an " "``Output`` node by default." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:66 +#: ../../docs/tutorials/animation/animation_tree.rst:65 msgid "" "In order for animations to play, a node has to be connected to the output. " "You can add nodes from the **Add Node..** menu or by right clicking an empty " "space:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:70 +#: ../../docs/tutorials/animation/animation_tree.rst:69 msgid "" "The simplest connection to make is to connect an ``Animation`` node to the " "output directly, which will just play back the animation." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:74 +#: ../../docs/tutorials/animation/animation_tree.rst:73 msgid "Following is a description of the other available nodes:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:77 +#: ../../docs/tutorials/animation/animation_tree.rst:76 msgid "Blend2 / Blend3" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:79 +#: ../../docs/tutorials/animation/animation_tree.rst:78 msgid "" "These nodes will blend between two or three inputs by a user-specified blend " "value:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:83 +#: ../../docs/tutorials/animation/animation_tree.rst:82 msgid "" "Blending can use **filters** to control individually which tracks get " "blended and which do not. This can be useful for layering animations on top " "of each other." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:87 +#: ../../docs/tutorials/animation/animation_tree.rst:86 msgid "" "For more complex blending, it is recommended to use blend spaces instead." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:90 +#: ../../docs/tutorials/animation/animation_tree.rst:89 msgid "OneShot" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:92 +#: ../../docs/tutorials/animation/animation_tree.rst:91 msgid "" "This node will execute an animation once and return when it finishes. You " "can customize blend times for fading in and out, as well as filters." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:126 +#: ../../docs/tutorials/animation/animation_tree.rst:125 msgid "TimeSeek" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:128 +#: ../../docs/tutorials/animation/animation_tree.rst:127 msgid "" "This node allows you to seek to a time in the animation connected to its " "`in` input. Use this node to play an ``Animation`` starting from a certain " @@ -55510,11 +55836,11 @@ msgid "" "the value to ``3.0``." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:156 +#: ../../docs/tutorials/animation/animation_tree.rst:155 msgid "TimeScale" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:158 +#: ../../docs/tutorials/animation/animation_tree.rst:157 msgid "" "This node allows you to scale the speed of the animation connected to its " "`in` input. The speed of the animation will be multiplied by the number in " @@ -55522,11 +55848,11 @@ msgid "" "Setting the scale to a negative number will play the animation backwards." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:164 +#: ../../docs/tutorials/animation/animation_tree.rst:163 msgid "Transition" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:166 +#: ../../docs/tutorials/animation/animation_tree.rst:165 msgid "" "This node is a simplified version of a StateMachine. You connect animations " "to the inputs, and the current state index determines which animation to " @@ -55534,18 +55860,18 @@ msgid "" "change the number of input ports, rearrange inputs, or delete inputs." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:202 +#: ../../docs/tutorials/animation/animation_tree.rst:201 msgid "StateMachine" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:204 +#: ../../docs/tutorials/animation/animation_tree.rst:203 msgid "" "When you make an ``AnimationNodeStateMachine``, you get an empty 2d graph in " "the bottom panel, under the AnimationTree tab. It contains a ``Start`` and " "``End`` state by default." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:209 +#: ../../docs/tutorials/animation/animation_tree.rst:208 msgid "" "To add states, right click or use the **create new nodes** button, whose " "icon is a plus in a box. You can add animations, blendspaces, blendtrees, or " @@ -55554,7 +55880,7 @@ msgid "" "original StateMachine, click **Root** on the top left of the panel." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:213 +#: ../../docs/tutorials/animation/animation_tree.rst:212 msgid "" "Before the StateMachine can do anything useful, the states must be connected " "with transitions. To add a transition, click the **connect nodes** button, " @@ -55562,61 +55888,61 @@ msgid "" "can create 2 transitions between states, one going in each direction." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:218 +#: ../../docs/tutorials/animation/animation_tree.rst:217 msgid "There are 3 types of transitions:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:222 +#: ../../docs/tutorials/animation/animation_tree.rst:221 msgid "*Immediate*: Will switch to the next state immediately." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:223 +#: ../../docs/tutorials/animation/animation_tree.rst:222 msgid "" "*Sync*: Will switch to the next state immediately, but will seek the new " "state to the playback position of the old state." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:224 +#: ../../docs/tutorials/animation/animation_tree.rst:223 msgid "" "*At End*: Will wait for the current state playback to end, then switch to " "the beginning of the next state animation." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:226 +#: ../../docs/tutorials/animation/animation_tree.rst:225 msgid "" "Transitions also have a few properties. Click a transition and it will be " "displayed in the inspector:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:230 +#: ../../docs/tutorials/animation/animation_tree.rst:229 msgid "*Xfade Time* is the time to cross-fade between this state and the next." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:231 +#: ../../docs/tutorials/animation/animation_tree.rst:230 msgid "" "*Xfade Curve* is a cross-fade following a curve rather than a linear blend." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:232 +#: ../../docs/tutorials/animation/animation_tree.rst:231 msgid "" "*Reset* determines whether the state you are switching into plays from the " "beginning (true) or not (false)." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:233 +#: ../../docs/tutorials/animation/animation_tree.rst:232 msgid "" "*Priority* is used together with the ``travel()`` function from code (more " "on this later). Lower priority transitions are preferred when travelling " "through the tree." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:234 +#: ../../docs/tutorials/animation/animation_tree.rst:233 msgid "" "*Switch Mode* is the transition type (see above). It can be changed after " "creation here." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:235 +#: ../../docs/tutorials/animation/animation_tree.rst:234 msgid "" "*Advance Mode* determines the advance mode. If ``Disabled``, the transition " "will not be used. If ``Enabled``, the transition will only be used during " @@ -55625,18 +55951,18 @@ msgid "" "expressions." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:238 +#: ../../docs/tutorials/animation/animation_tree.rst:237 msgid "Advance Condition and Advance Expression" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:240 +#: ../../docs/tutorials/animation/animation_tree.rst:239 msgid "" "The last 2 properties in a StateMachine transition are ``Advance Condition`` " "and ``Advance Expression.`` When the Advance Mode is set to *Auto*, these " "determine if the transition will advance or not." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:243 +#: ../../docs/tutorials/animation/animation_tree.rst:242 msgid "" "Advance Condition is a true/false check. You may put a custom variable name " "in the text field, and when the StateMachine reaches this transition, it " @@ -55645,7 +55971,7 @@ msgid "" "cannot check for falseness." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:247 +#: ../../docs/tutorials/animation/animation_tree.rst:246 msgid "" "This gives the Advance Condition a very limited capability. If you wanted to " "make a transition back and forth based on one property, you would need to " @@ -55653,7 +55979,7 @@ msgid "" "true. This is why, in Godot 4, the Advance Expression was added." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:250 +#: ../../docs/tutorials/animation/animation_tree.rst:249 msgid "" "The Advance Expression works similar to the Advance Condition, but instead " "of checking if one variable is true, it evaluates any expression. An " @@ -55661,50 +55987,50 @@ msgid "" "examples of expressions that would work in the Advance Expression:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:253 +#: ../../docs/tutorials/animation/animation_tree.rst:252 msgid "``is_walking``" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:254 +#: ../../docs/tutorials/animation/animation_tree.rst:253 msgid "``is_walking`` == true" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:255 +#: ../../docs/tutorials/animation/animation_tree.rst:254 msgid "``is_walking && !is_idle``" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:256 +#: ../../docs/tutorials/animation/animation_tree.rst:255 msgid "``velocity > 0``" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:257 +#: ../../docs/tutorials/animation/animation_tree.rst:256 msgid "``player.is_on_floor()``" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:259 +#: ../../docs/tutorials/animation/animation_tree.rst:258 msgid "" "Here is an example of an improperly-set-up StateMachine transition using " "Advance Condition:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:264 +#: ../../docs/tutorials/animation/animation_tree.rst:263 msgid "" "This is not working because there is a ``!`` variable in the Advance " "Condition, which cannot be checked." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:266 +#: ../../docs/tutorials/animation/animation_tree.rst:265 msgid "" "Here is the same example, set up properly, using two opposite variables:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:271 +#: ../../docs/tutorials/animation/animation_tree.rst:270 msgid "" "Here is the same example, but using Advance Expression rather than Advance " "Condition, which eliminates the need for two variables:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:277 +#: ../../docs/tutorials/animation/animation_tree.rst:276 msgid "" "In order to use Advance Expressions, the Advance Expression Base Node has to " "be set from the Inspector of the AnimationTree node. By default, it is set " @@ -55712,11 +56038,11 @@ msgid "" "contains the script with your animation variables." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:281 +#: ../../docs/tutorials/animation/animation_tree.rst:280 msgid "StateMachine travel" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:283 +#: ../../docs/tutorials/animation/animation_tree.rst:282 msgid "" "One of the nice features in Godot's ``StateMachine`` implementation is the " "ability to travel. You can instruct the graph to go from the current state " @@ -55726,7 +56052,7 @@ msgid "" "the destination state." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:287 +#: ../../docs/tutorials/animation/animation_tree.rst:286 msgid "" "To use the travel ability, you should first retrieve " "the :ref:`AnimationNodeStateMachinePlayback " @@ -55734,24 +56060,24 @@ msgid "" "node (it is exported as a property), and then call one of its many functions:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:301 +#: ../../docs/tutorials/animation/animation_tree.rst:300 msgid "" "The StateMachine must be running before you can travel. Make sure to either " "call ``start()`` or connect a node to **Start**." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:304 +#: ../../docs/tutorials/animation/animation_tree.rst:303 msgid "BlendSpace2D and BlendSpace1D" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:306 +#: ../../docs/tutorials/animation/animation_tree.rst:305 msgid "" "``BlendSpace2D`` is a node to do advanced blending in two dimensions. Points " "representing animations are added to a 2D space and then a position between " "them is controlled to determine the blending:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:311 +#: ../../docs/tutorials/animation/animation_tree.rst:310 msgid "" "You may place these points anywhere on the graph by right clicking or using " "the **add point** button, whose icon is a pen and point. Wherever you place " @@ -55759,7 +56085,7 @@ msgid "" "Delaunay. You may also control and label the ranges in X and Y." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:317 +#: ../../docs/tutorials/animation/animation_tree.rst:316 msgid "" "Finally, you may also change the blend mode. By default, blending happens by " "interpolating points inside the closest triangle. When dealing with 2D " @@ -55769,27 +56095,27 @@ msgid "" "changed in the *Blend* menu:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:323 +#: ../../docs/tutorials/animation/animation_tree.rst:322 msgid "" "BlendSpace1D works just like BlendSpace2D, but in one dimension (a line). " "Triangles are not used." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:328 +#: ../../docs/tutorials/animation/animation_tree.rst:327 msgid "For better blending" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:330 +#: ../../docs/tutorials/animation/animation_tree.rst:329 msgid "" -"In Godot 4.0+, in order for the blending results to be deterministic " -"(reproducible and always consistent), the blended property values must have " -"a specific initial value. For example, in the case of two animations to be " -"blended, if one animation has a property track and the other does not, the " -"blended animation is calculated as if the latter animation had a property " -"track with the initial value." +"For the blending results to be deterministic (reproducible and always " +"consistent), the blended property values must have a specific initial value. " +"For example, in the case of two animations to be blended, if one animation " +"has a property track and the other does not, the blended animation is " +"calculated as if the latter animation had a property track with the initial " +"value." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:335 +#: ../../docs/tutorials/animation/animation_tree.rst:334 msgid "" "When using Position/Rotation/Scale 3D tracks for Skeleton3D bones, the " "initial value is Bone Rest. For other properties, the initial value is ``0`` " @@ -55797,32 +56123,32 @@ msgid "" "first keyframe is used instead." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:339 +#: ../../docs/tutorials/animation/animation_tree.rst:338 msgid "" "For example, the following AnimationPlayer has two animations, but one of " "them lacks a Property track for Position." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:343 +#: ../../docs/tutorials/animation/animation_tree.rst:342 msgid "" "This means that the animation lacking that will treat those Positions as " "``Vector2(0, 0)``." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:347 +#: ../../docs/tutorials/animation/animation_tree.rst:346 msgid "" "This problem can be solved by adding a Property track for Position as an " "initial value to the ``RESET`` animation." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:353 +#: ../../docs/tutorials/animation/animation_tree.rst:352 msgid "" "Be aware that the ``RESET`` animation exists to define the default pose when " "loading an object originally. It is assumed to have only one frame and is " "not expected to be played back using the timeline." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:356 +#: ../../docs/tutorials/animation/animation_tree.rst:355 msgid "" "Also keep in mind that the Rotation 3D tracks and the Property tracks for 2D " "rotation with Interpolation Type set to Linear Angle or Cubic Angle will " @@ -55830,7 +56156,7 @@ msgid "" "animation." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:360 +#: ../../docs/tutorials/animation/animation_tree.rst:359 msgid "" "This can be useful for Skeleton3Ds to prevent the bones penetrating the body " "when blending animations. Therefore, Skeleton3D's Bone Rest values should be " @@ -55838,23 +56164,23 @@ msgid "" "for humanoid models, it is preferable to import them in a T-pose**." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:366 +#: ../../docs/tutorials/animation/animation_tree.rst:365 msgid "" "You can see that the shortest rotation path from Bone Rests is prioritized " "rather than the shortest rotation path between animations." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:368 +#: ../../docs/tutorials/animation/animation_tree.rst:367 msgid "" "If you need to rotate Skeleton3D itself more than 180 degrees by blend " "animations for movement, you can use Root Motion." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:371 +#: ../../docs/tutorials/animation/animation_tree.rst:370 msgid "Root motion" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:373 +#: ../../docs/tutorials/animation/animation_tree.rst:372 msgid "" "When working with 3D animations, a popular technique is for animators to use " "the root skeleton bone to give motion to the rest of the skeleton. This " @@ -55862,44 +56188,44 @@ msgid "" "below. It also allows precise interaction with objects during cinematics." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:376 +#: ../../docs/tutorials/animation/animation_tree.rst:375 msgid "" "When playing back the animation in Godot, it is possible to select this bone " "as the *root motion track*. Doing so will cancel the bone transformation " "visually (the animation will stay in place)." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:381 +#: ../../docs/tutorials/animation/animation_tree.rst:380 msgid "" "Afterwards, the actual motion can be retrieved via the :ref:`AnimationTree " "` API as a transform:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:408 +#: ../../docs/tutorials/animation/animation_tree.rst:407 msgid "" "This can be fed to functions such as :ref:`CharacterBody3D.move_and_slide " "` to control the character " "movement." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:410 +#: ../../docs/tutorials/animation/animation_tree.rst:409 msgid "" "There is also a tool node, ``RootMotionView``, you can place a scene that " "will act as a custom floor for your character and animations (this node is " "disabled by default during the game)." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:416 +#: ../../docs/tutorials/animation/animation_tree.rst:415 msgid "Controlling from code" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:418 +#: ../../docs/tutorials/animation/animation_tree.rst:417 msgid "" "After building the tree and previewing it, the only question remaining is " "\"How is all this controlled from code?\"." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:420 +#: ../../docs/tutorials/animation/animation_tree.rst:419 msgid "" "Keep in mind that the animation nodes are just resources, so they are shared " "between all instances using them. Setting values in the nodes directly will " @@ -55909,7 +56235,7 @@ msgid "" "(such as a StateMachine or blend space) in different animation trees." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:425 +#: ../../docs/tutorials/animation/animation_tree.rst:424 msgid "" "The actual animation data is contained in the ``AnimationTree`` node and is " "accessed via properties. Check the \"Parameters\" section of the " @@ -55917,24 +56243,24 @@ msgid "" "real-time:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:430 +#: ../../docs/tutorials/animation/animation_tree.rst:429 msgid "" "This is handy because it makes it possible to animate them from an " "``AnimationPlayer``, or even the ``AnimationTree`` itself, allowing very " "complex animation logic." msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:433 +#: ../../docs/tutorials/animation/animation_tree.rst:432 msgid "" "To modify these values from code, you must obtain the property path. You can " "find them by hovering your mouse over any of the parameters:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:437 +#: ../../docs/tutorials/animation/animation_tree.rst:436 msgid "Then you can set or read them:" msgstr "" -#: ../../docs/tutorials/animation/animation_tree.rst:450 +#: ../../docs/tutorials/animation/animation_tree.rst:449 msgid "" "Advance Expressions from a StateMachine will not be found under the " "parameters. This is because they are held in another script rather than the " @@ -56022,10 +56348,9 @@ msgstr "" #: ../../docs/tutorials/animation/playing_videos.rst:50 msgid "" -"By default in Godot 4.0, the VideoStreamPlayer will automatically be resized " -"to match the video's resolution. You can make it follow " -"usual :ref:`class_Control` sizing by enabling **Expand** on the " -"VideoStreamPlayer node." +"By default, the VideoStreamPlayer will automatically be resized to match the " +"video's resolution. You can make it follow usual :ref:`class_Control` sizing " +"by enabling **Expand** on the VideoStreamPlayer node." msgstr "" #: ../../docs/tutorials/animation/playing_videos.rst:54 @@ -56812,6 +57137,7 @@ msgstr "" #: ../../docs/tutorials/animation/creating_movies.rst:234 #: ../../docs/tutorials/plugins/editor/import_plugins.rst:32 +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:166 msgid "Configuration" msgstr "" @@ -57679,13 +58005,7 @@ msgstr "" #: ../../docs/tutorials/assets_pipeline/importing_images.rst:142 msgid "" -"In Godot 4.0, changing the texture filter and repeat mode is no longer done " -"in the import options." -msgstr "" - -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:145 -msgid "" -"Instead, texture filter and repeat modes are changed in the CanvasItem " +"Since Godot 4.0, texture filter and repeat modes are set in the CanvasItem " "properties in 2D (with a project setting acting as a default), and in " "a :ref:`per-material configuration in 3D " "`. In custom shaders, filter and repeat " @@ -57693,19 +58013,19 @@ msgid "" "the :ref:`doc_shading_language` documentation." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:155 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:152 #: ../../docs/tutorials/assets_pipeline/importing_audio_samples.rst:168 msgid "Compress > Mode" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:157 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:154 msgid "" "Images are one of the largest assets in a game. To handle them efficiently, " "they need to be compressed. Godot offers several compression methods, " "depending on the use case." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:161 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:158 msgid "" "**Lossless:** This is the default and most common compression mode for 2D " "assets. It shows assets without any kind of artifacting, and disk " @@ -57714,7 +58034,7 @@ msgid "" "pixel art." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:165 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:162 msgid "" "**Lossy:** This is a good choice for large 2D assets. It has some artifacts, " "but less than VRAM compression and the file size is several times lower " @@ -57722,7 +58042,7 @@ msgid "" "decreased by this mode; it's the same as with Lossless or VRAM Uncompressed." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:169 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:166 msgid "" "**VRAM Compressed:** This is the default and most common compression mode " "for 3D assets. Size on disk is reduced and video memory usage is also " @@ -57731,13 +58051,13 @@ msgid "" "lower-resolution textures." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:174 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:171 msgid "" "**VRAM Uncompressed:** Only useful for formats that can't be compressed, " "such as raw floating-point images." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:176 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:173 msgid "" "**Basis Universal:** This alternative VRAM compression mode encodes the " "texture to a format that can be transcoded to most GPU-compressed formats at " @@ -57748,7 +58068,7 @@ msgid "" "internally fall back to VRAM Compressed instead)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:186 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:183 #: ../../docs/tutorials/performance/gpu_optimization.rst:224 msgid "" "Even in 3D, \"pixel art\" textures should have VRAM compression disabled as " @@ -57756,42 +58076,42 @@ msgid "" "significantly due to their low resolution." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:190 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:187 msgid "" "In this table, each of the 5 options are described together with their " "advantages and disadvantages (|good| = best, |bad| = worst):" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:194 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:191 msgid "Compress mode" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:194 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:218 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:191 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:215 msgid "Lossless" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:194 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:218 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:191 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:215 msgid "Lossy" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:194 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:218 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:191 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:215 msgid "VRAM Compressed" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:194 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:218 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:191 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:215 msgid "VRAM Uncompressed" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:194 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:218 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:191 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:215 msgid "Basis Universal" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:196 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:193 #: ../../docs/tutorials/export/feature_tags.rst:41 #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:229 #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:337 @@ -57802,166 +58122,166 @@ msgstr "" msgid "**Description**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:196 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:193 msgid "Stored as Lossless WebP / PNG" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:196 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:193 msgid "Stored as Lossy WebP" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:196 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:193 msgid "Stored as S3TC, BPTC or ETC2 depending on platform" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:196 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:193 msgid "Stored as raw pixels" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:196 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:193 msgid "Transcoded to VRAM Compressed format" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:198 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:195 msgid "**Size on disk**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:198 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:195 msgid "|regular| Small" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:213 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:210 msgid "regular" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:198 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:195 msgid "|good| Very small" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:198 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:200 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:195 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:197 msgid "|bad| Large" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:200 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:197 msgid "**Memory usage**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:200 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:197 msgid "|good| Small" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:202 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:199 msgid "**Performance**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:202 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:206 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:199 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:203 msgid "|regular| Normal" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:202 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:206 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:199 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:203 msgid "|good| Fast" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:204 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:201 msgid "**Quality loss**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:204 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:201 msgid "|good| None" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:204 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:201 msgid "|regular| Slight" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:204 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:201 msgid "|bad| Moderate" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:206 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:203 msgid "**Load time**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:206 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:203 msgid "|bad| Slow" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:215 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:212 msgid "Estimated memory usage for a single RGBA8 texture with mipmaps enabled:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:218 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:215 msgid "Texture size" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:220 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:217 msgid "**128×128**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:220 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:222 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:217 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:219 msgid "|good| 85 KiB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:220 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:217 msgid "|good| 21 KiB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:222 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:219 msgid "**256×256**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:222 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:224 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:219 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:221 msgid "|good| 341 KiB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:224 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:221 msgid "**512×512**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:224 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:226 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:221 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:223 msgid "|good| 1.33 MiB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:226 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:223 msgid "**1024×1024**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:226 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:228 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:223 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:225 msgid "|regular| 5.33 MiB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:228 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:225 msgid "**2048×2048**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:228 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:230 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:225 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:227 msgid "|bad| 21.33 MiB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:230 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:227 msgid "**4096×4096**" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:230 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:227 msgid "|bad| 85.33 MiB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:235 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:232 msgid "" "In the above table, memory usage will be reduced by 25% for images that do " "not have an alpha channel (RGB8). Memory usage will be further decreased by " "25% for images that have mipmaps disabled." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:239 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:236 msgid "" "Notice how at larger resolutions, the impact of VRAM compression is much " "greater. With a 4:1 compression ratio (6:1 for opaque textures with S3TC), " @@ -57969,7 +58289,7 @@ msgid "" "axis, while using the same amount of memory on the GPU." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:244 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:241 msgid "" "VRAM compression also reduces the memory bandwidth required to sample the " "texture, which can speed up rendering in memory bandwidth-constrained " @@ -57978,39 +58298,39 @@ msgid "" "resolution textures." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:249 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:246 msgid "" "You can preview how much memory a texture takes by double-clicking it in the " "FileSystem dock, then looking at the Inspector:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:252 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:249 msgid "Previewing a texture in the Inspector" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:256 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:253 msgid "" "Previewing a texture in the Inspector. Credit: `Red Brick 03 - Poly Haven " "`__" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:259 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:256 msgid "Compress > High Quality" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:263 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:260 msgid "" "High-quality VRAM texture compression is only supported in the Forward+ and " "Mobile renderers." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:266 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:263 msgid "" "When using the Compatibility renderer, this option is always considered " "disabled." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:269 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:266 msgid "" "If enabled, uses BPTC compression on desktop platforms and :abbr:`ASTC " "(Adaptive Scalable Texture Compression)` compression on mobile platforms. " @@ -58018,7 +58338,7 @@ msgid "" "textures." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:273 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:270 msgid "" "If disabled (default), uses the faster but lower-quality S3TC compression on " "desktop platforms and ETC2 on mobile/web platforms. When using S3TC, DXT1 " @@ -58026,23 +58346,23 @@ msgid "" "normal map (:abbr:`RGTC (Red-Green Texture Compression)`) textures." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:278 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:275 msgid "" "BPTC and ASTC support VRAM compression for HDR textures, but S3TC and ETC2 " "do not (see **HDR Compression** below)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:282 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:279 msgid "Compress > HDR Compression" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:286 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:283 msgid "" "This option only has an effect on textures that are imported as HDR formats " "in Godot (``.hdr`` and ``.exr`` files)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:289 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:286 msgid "" "If set to **Disabled**, never uses VRAM compression for HDR textures, " "regardless of whether they're opaque or transparent. Instead, the texture is " @@ -58051,24 +58371,24 @@ msgid "" "float image format." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:294 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:291 msgid "" "If set to **Opaque Only** (default), only uses VRAM compression for opaque " "HDR textures. This is due to a limitation of HDR formats, as there is no " "VRAM-compressed HDR format that supports transparency at the same time." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:298 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:295 msgid "" "If set to **Always**, will force VRAM compression even for HDR textures with " "an alpha channel. To perform this, the alpha channel is discarded on import." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:302 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:299 msgid "Compress > Normal Map" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:304 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:301 msgid "" "When using a texture as normal map, only the red and green channels are " "required. Given regular texture compression algorithms produce artifacts " @@ -58080,7 +58400,7 @@ msgid "" "it will be changed to **Enable** and reimported automatically." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:312 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:309 msgid "" "Note that :abbr:`RGTC (Red-Green Texture Compression)` compression affects " "the resulting normal map image. You will have to adjust custom shaders that " @@ -58089,22 +58409,22 @@ msgid "" "of the actual normal map's contents)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:318 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:315 msgid "" "In the example below, the normal map with :abbr:`RGTC (Red-Green Texture " "Compression)` compression is able to preserve its detail much better, while " "using the same amount of memory as a standard RGBA VRAM-compressed texture:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:322 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:326 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:319 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:323 msgid "" "Normal map with standard VRAM compression (left) and with RGTC VRAM " "compression (right)" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:330 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:439 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:327 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:436 msgid "" "Godot requires the normal map to use the X+, Y+ and Z+ coordinates, which is " "known as an OpenGL-style normal map. If you've imported a material made to " @@ -58113,23 +58433,23 @@ msgid "" "import option." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:340 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:337 msgid "Compress > Channel Pack" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:342 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:339 msgid "" "If set to **sRGB Friendly** (default), prevents the RG color format from " "being used as it does not support sRGB color." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:345 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:342 msgid "" "If set to **Optimized**, allows the RG color format to be used if the " "texture does not use the blue channel." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:348 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:345 msgid "" "A third option **Normal Map (RG Channels)** is *only* available in layered " "textures " @@ -58142,36 +58462,36 @@ msgid "" "with the **VRAM Compressed** or **Basis Universal** compression modes." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:360 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:357 msgid "Mipmaps > Generate" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:362 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:359 msgid "" "If enabled, smaller versions of the texture are generated on import. For " "example, a 64×64 texture will generate 6 mipmaps (32×32, 16×16, 8×8, 4×4, " "2×2, 1×1). This has several benefits:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:366 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:363 msgid "" "Textures will not become grainy in the distance (in 3D), or if scaled down " "due to camera zoom or CanvasItem scale (in 2D)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:368 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:365 msgid "" "Performance will improve if the texture is displayed in the distance, since " "sampling smaller versions of the original texture is faster and requires " "less memory bandwidth." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:372 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:369 msgid "" "The downside of mipmaps is that they increase memory usage by roughly 33%." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:374 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:371 msgid "" "It's recommended to enable mipmaps in 3D. However, in 2D, this should only " "be enabled if your project visibly benefits from having mipmaps enabled. If " @@ -58179,17 +58499,17 @@ msgid "" "enabling mipmaps but memory usage will increase." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:380 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:377 msgid "Mipmaps > Limit" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:387 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:384 msgid "" "**Mipmaps > Limit** is currently not implemented and has no effect when " "changed." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:389 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:386 msgid "" "If set to a value greater than ``-1``, limits the maximum number of mipmaps " "that can be generated. This can be decreased if you don't want textures to " @@ -58197,36 +58517,36 @@ msgid "" "graininess." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:394 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:391 msgid "Roughness > Mode" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:396 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:393 msgid "" "The color channel to consider as a roughness map in this texture. Only " "effective if **Roughness > Src Normal** is not empty." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:400 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:397 msgid "Roughness > Src Normal" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:402 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:399 msgid "" "The path to the texture to consider as a normal map for roughness filtering " "on import. Specifying this can help decrease specular aliasing slightly in " "3D." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:405 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:402 msgid "Roughness filtering on import is only used in 3D rendering, not 2D." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:408 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:405 msgid "Process > Fix Alpha Border" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:410 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:407 msgid "" "This puts pixels of the same surrounding color in transition from " "transparent to opaque areas. For textures displayed with bilinear filtering, " @@ -58234,17 +58554,17 @@ msgid "" "editor." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:416 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:413 msgid "" "It's recommended to leave this enabled (as it is by default), unless this " "causes issues for a particular image." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:420 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:417 msgid "Process > Premult Alpha" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:422 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:419 msgid "" "An alternative to fixing darkened borders with **Fix Alpha Border** is to " "use premultiplied alpha. By enabling this option, the texture will be " @@ -58252,7 +58572,7 @@ msgid "" "materials to be displayed correctly:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:427 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:424 msgid "" "In 2D, a :ref:`class_CanvasItemMaterial` will need to be created and " "configured to use the **Premul Alpha** blend mode on CanvasItems that use " @@ -58260,7 +58580,7 @@ msgid "" "``render_mode blend_premul_alpha;`` should be used." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:431 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:428 msgid "" "In 3D, a :ref:`class_BaseMaterial3D` will need to be created and configured " "to use the **Premul Alpha** blend mode on materials that use this texture. " @@ -58268,15 +58588,15 @@ msgid "" "blend_premul_alpha;`` should be used." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:437 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:434 msgid "Process > Normal Map Invert Y" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:449 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:446 msgid "Process > HDR as sRGB" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:451 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:448 msgid "" "Some HDR images you can find online may be broken and contain sRGB color " "data (instead of linear color data). It is advised not to use those files. " @@ -58284,23 +58604,23 @@ msgid "" "correct." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:457 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:454 msgid "" "Enabling **HDR as sRGB** on well-formatted HDR images will cause the " "resulting image to look too dark, so leave this disabled if unsure." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:461 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:458 msgid "Process > HDR Clamp Exposure" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:463 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:460 msgid "" "Some HDR panorama images you can find online may contain extremely bright " "pixels, due to being taken from real life sources without any clipping." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:466 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:463 msgid "" "While these HDR panorama images are accurate to real life, this can cause " "the radiance map generated by Godot to contain sparkles when used as a " @@ -58310,11 +58630,11 @@ msgid "" "clipping – glow will keep working when looking at the background sky." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:474 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:471 msgid "Process > Size Limit" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:476 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:473 msgid "" "If set to a value greater than ``0``, the size of the texture is limited on " "import to a value smaller than or equal to the value specified here. For non-" @@ -58323,24 +58643,24 @@ msgid "" "using cubic interpolation." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:482 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:479 msgid "" "This can be used to reduce memory usage without affecting the source images, " "or avoid issues with textures not displaying on mobile/web platforms (as " "these usually can't display textures larger than 4096×4096)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:489 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:486 msgid "Detect 3D > Compress To" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:491 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:488 msgid "" "This changes the :ref:`doc_importing_images_compress_mode` option that is " "used when a texture is detected as being used in 3D." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:494 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:491 msgid "" "Changing this import option only has an effect if a texture is detected as " "being used in 3D. Changing this to **Disabled** then reimporting will not " @@ -58348,17 +58668,17 @@ msgid "" "in 3D), but choosing **VRAM Compressed** or **Basis Universal** will." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:500 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:497 msgid "SVG > Scale" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:502 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:514 -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:523 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:499 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:511 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:520 msgid "*This is only available for SVG images.*" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:504 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:501 msgid "" "The scale the SVG should be rendered at, with ``1.0`` being the original " "design size. Higher values result in a larger image. Note that unlike font " @@ -58366,22 +58686,22 @@ msgid "" "See also **Editor > Scale With Editor Scale** below." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:512 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:509 msgid "Editor > Scale With Editor Scale" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:516 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:513 msgid "" "If true, scales the imported image to match the editor's display scale " "factor. This should be enabled for editor plugin icons and custom class " "icons, but should be left disabled otherwise." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:521 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:518 msgid "Editor > Convert Colors With Editor Theme" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:525 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:522 msgid "" "If checked, converts the imported image's colors to match the editor's icon " "and font color palette. This assumes the image uses the exact same colors " @@ -58391,41 +58711,41 @@ msgid "" "disabled otherwise." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:534 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:531 msgid "Importing SVG images with text" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:536 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:533 msgid "" "As the SVG library used in Godot doesn't support rasterizing text found in " "SVG images, text must be converted to a path first. Otherwise, text won't " "appear in the rasterized image." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:540 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:537 msgid "" "There are two ways to achieve this in a non-destructive manner, so you can " "keep editing the original text afterwards:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:543 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:540 msgid "" "Select your text object in Inkscape, then duplicate it in place by " "pressing :kbd:`Ctrl + D` and use **Path > Object to Path**. Hide the " "original text object afterwards using the **Layers and Objects** dock." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:546 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:543 msgid "" "Use the Inkscape command line to export an SVG from another SVG file with " "text converted to paths:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:557 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:554 msgid "Supporting high-resolution texture sizes in 2D without artifacts" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:559 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:556 msgid "" "To support :ref:`multiple resolutions ` with crisp " "visuals at high resolutions, you will need to use high-resolution source " @@ -58433,17 +58753,17 @@ msgid "" "blurriness, which is typically 4K in modern desktop games)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:564 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:561 msgid "There are 2 ways to proceed:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:566 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:563 msgid "" "Use a high base resolution in the project settings (such as 4K), then use " "the textures at original scale. This is an easier approach." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:568 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:565 msgid "" "Use a low base resolution in the project settings (such as 1080p), then " "downscale textures when using them. This is often more difficult and can " @@ -58451,14 +58771,14 @@ msgid "" "is recommended instead." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:573 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:570 msgid "" "After doing this, you may notice that textures become grainy at lower " "viewport resolutions. To resolve this, enable **Mipmaps** on textures used " "in 2D in the Import dock. This will increase memory usage." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:577 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:574 msgid "" "Enabling mipmaps can also make textures appear blurrier, but you can choose " "to make textures sharper (at the cost of some graininess) by setting " @@ -58466,17 +58786,17 @@ msgid "" "negative value." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:583 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:580 msgid "Use appropriate texture sizes in 3D" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:585 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:582 msgid "" "While there's no \"one size fits all\" recommendation, here are some general " "recommendations for choosing texture sizes in 3D:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:588 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:585 msgid "" "The size of a texture should be adjusted to have a consistent texel density " "compared to surrounding objects. While this cannot be ensured perfectly when " @@ -58484,7 +58804,7 @@ msgid "" "texture detail fairly consistent throughout a 3D scene." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:592 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:589 msgid "" "The smaller the object appears on screen, the smaller its texture should be. " "For example, a tree that only appears in the background doesn't need a " @@ -58492,13 +58812,13 @@ msgid "" "close to." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:595 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:592 msgid "" "Using power-of-two texture sizes is recommended, but is not required. " "Textures don't have to be square – sizes such as 1024×512 are acceptable." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:597 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:594 msgid "" "There are diminishing returns to using large texture sizes, despite the " "increased memory usage and loading times. Most modern 3D games not using a " @@ -58506,7 +58826,7 @@ msgid "" "512×512 for textures spanning smaller surfaces." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:601 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:598 msgid "" "When working with physically-based materials in 3D, you can reduce memory " "usage and file size without affecting quality too much by using a lower " @@ -58515,27 +58835,27 @@ msgid "" "texture)." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:607 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:604 msgid "" "If you have control over how the 3D models are created, these tips are also " "worth exploring:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:610 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:607 msgid "" "When working with 3D models that are mostly symmetrical, you may be able to " "use mirrored UVs to double the effective texel density. This may look " "unnatural when used on human faces though." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:613 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:610 msgid "" "When working with 3D models using a low-poly style and plain colors, you can " "rely on vertex colors instead of textures to represent colors on the model's " "surfaces." msgstr "" -#: ../../docs/tutorials/assets_pipeline/importing_images.rst:619 +#: ../../docs/tutorials/assets_pipeline/importing_images.rst:616 msgid "" "Images can be loaded and saved at runtime using :ref:`runtime file loading " "and saving `, including from an " @@ -60164,7 +60484,7 @@ msgstr "" msgid "" "**Importer** Which import method is used. ubfx handles fbx files as fbx " "files. FBX2glTF converts FBX files to glTF on import and requires additional " -"setup. FBX2glTF is not recommended unless you have a specific rason to use " +"setup. FBX2glTF is not recommended unless you have a specific reason to use " "it over ufbx or working with a different file format." msgstr "" @@ -60367,11 +60687,11 @@ msgstr "" #: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:291 msgid "" -"As of Godot 4.0, you can choose to import **only** animations from a glTF " -"file and nothing else. This is used in some asset pipelines to distribute " -"animations separately from models. For example, this allows you to use one " -"set of animations for several characters, without having to duplicate " -"animation data in every character." +"You can also choose to import **only** animations from a glTF file and " +"nothing else. This is used in some asset pipelines to distribute animations " +"separately from models. For example, this allows you to use one set of " +"animations for several characters, without having to duplicate animation " +"data in every character." msgstr "" #: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:297 @@ -60798,7 +61118,7 @@ msgstr "" #: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/advanced_import_settings.rst:170 msgid "" "You want to use a different texture filtering mode, as this option is " -"configured in the material since Godot 4.0 (and not in the image)." +"configured in the material (and not in the image)." msgstr "" #: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/advanced_import_settings.rst:172 @@ -60951,13 +61271,13 @@ msgstr "" #: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:21 msgid "" -"Godot 3.x and Godot 4.0+ have different Bone Pose behaviors. In Godot 3.x, " -"Bone Pose is relative to Bone Rest, but in Godot 4.0+, it includes Bone " -"Rest. See this `article `__." +"Godot 3 and Godot 4 have different Bone Pose behaviors. In Godot 3, Bone " +"Pose is relative to Bone Rest, but in Godot 4, it includes Bone Rest. See " +"this `article `__ for more information." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:25 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:27 msgid "" "Skeletal models have different Bone Rests depending on the environment from " "which they were exported. For example, the bones of a glTF model output from " @@ -60966,29 +61286,29 @@ msgid "" "model output from Maya." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:30 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:32 msgid "" "To share animations in Godot, it is necessary to match Bone Rests as well as " -"Bone Names to remove unwanted tracks in some cases. In Godot 4.0+, you can " -"do that using the scene importer." +"Bone Names to remove unwanted tracks in some cases. You can do that using " +"the scene importer." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:35 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:36 msgid "Options for Retargeting" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:38 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:39 msgid "Bone Map" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:40 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:41 msgid "" "When you select the Skeleton3D node in the advanced scene import menu, a " "menu will appear on the right-hand side containing the \"Retarget\" section. " "The Retarget section has a single property ``bone_map``." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:46 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:47 msgid "" "With the Skeleton node selected, first set up a new :ref:`class_bonemap` " "and :ref:`class_skeletonprofile`. Godot has a preset " @@ -60997,7 +61317,7 @@ msgid "" "using :ref:`class_skeletonprofilehumanoid`." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:50 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:51 msgid "" "If you need a profile that is different " "from :ref:`class_skeletonprofilehumanoid`, you can export " @@ -61005,14 +61325,14 @@ msgid "" "using the **Skeleton3D** menu in the 3D viewport's toolbar." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:53 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:54 msgid "" "When you use :ref:`class_skeletonprofilehumanoid`, auto-mapping will be " "performed when the :ref:`class_skeletonprofile` is set. If the auto-mapping " "does not work well, you can map bones manually." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:58 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:59 msgid "" "Any missing, duplicate or incorrect parent-child relationship mappings will " "be indicated by a magenta / red button (depending on the editor setting). It " @@ -61020,23 +61340,23 @@ msgid "" "shared correctly." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:62 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:63 msgid "" "The auto-mapping uses pattern matching for the bone names. So we recommend " "to use common English names for bones." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:65 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:66 msgid "" "After you set up the ``bone_map``, several options are available in the " "sections below." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:70 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:71 msgid "Remove Tracks" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:72 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:73 msgid "" "If you import resources as an :ref:`class_animationlibrary` that will be " "shared, we recommend to enable these options. However, if you import " @@ -61045,101 +61365,101 @@ msgid "" "the accessories to not animate." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:78 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:79 msgid "Except Bone Transform" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:80 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:81 msgid "Removes any tracks except the bone Transform track from the animations." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:83 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:84 msgid "Unimportant Positions" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:85 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:86 msgid "" "Removes Position tracks other than ``root_bone`` and ``scale_base_bone`` " "defined in :ref:`class_skeletonprofile` from the animations. " "In :ref:`class_skeletonprofilehumanoid`, this means that to remove Position " -"tracks other than \"Root\" and \"Hips\". Since Godot 4.0+, animations " -"include Bone Rest in the Transform value. If you disable this option, the " -"animation may change the body shape unpredictably." +"tracks other than \"Root\" and \"Hips\". Since Godot 4, animations include " +"Bone Rest in the Transform value. If you disable this option, the animation " +"may change the body shape unpredictably." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:92 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:93 msgid "Unmapped Bones" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:94 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:95 msgid "Removes unmapped bone Transform tracks from the animations." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:97 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:98 msgid "Bone Renamer" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:100 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:101 msgid "Rename Bones" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:102 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:103 msgid "Rename the mapped bones." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:105 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:106 msgid "Unique Node" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:107 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:108 msgid "" "Makes Skeleton a unique node with the name specified in the " "``skeleton_name``. This allows the animation track paths to be unified " "independent of the scene hierarchy." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:111 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:112 msgid "Rest Fixer" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:113 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:114 msgid "" "Reference poses defined in :ref:`class_skeletonprofilehumanoid` have the " "following rules:" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:115 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:116 msgid "The humanoid is T-pose" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:116 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:117 msgid "The humanoid is facing +Z in the Right-Handed Y-UP Coordinate System" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:117 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:118 msgid "The humanoid should not have a Transform as Node" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:118 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:119 msgid "Directs the +Y axis from the parent joint to the child joint" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:119 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:120 msgid "+X rotation bends the joint like a muscle contracting" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:121 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:122 msgid "" "These rules are convenient definitions for blend animation and Inverse " "Kinematics (IK). If your model does not match this definition, you need to " "fix it with these options." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:125 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:126 msgid "Apply Node Transform" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:127 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:128 msgid "" "If the asset is not exported correctly for sharing, the imported Skeleton " "may have a Transform as a Node. For example, a glTF exported from Blender " @@ -61149,17 +61469,17 @@ msgid "" "import." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:133 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:134 msgid "" "If the imported scene contains objects other than Skeletons, this option may " "have a negative effect." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:136 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:137 msgid "Normalize Position Tracks" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:138 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:139 msgid "" "Position track is used mostly for model movement, but sharing the moving " "animation between models with different heights may cause the appearance of " @@ -61172,36 +61492,36 @@ msgid "" "``1.0``." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:146 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:147 msgid "" "With :ref:`class_skeletonprofilehumanoid`, ``scale_base_bone`` is \"Hips\", " "therefore the Hips' height is used as the ``motion_scale``." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:149 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:150 msgid "Overwrite Axis" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:151 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:152 msgid "" "Unifies the models' Bone Rests by overwriting it to match the reference " "poses defined in the :ref:`class_skeletonprofile`." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:153 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:154 msgid "" -"This is the most important option for sharing animations in Godot 4.0+, but " -"be aware that this option can produce horrible results **if the original " -"Bone Rest set externally is important**. If you want to share animations " -"with keeping the original Bone Rest, consider to use the `Realtime Retarget " +"This is the most important option for sharing animations in Godot 4, but be " +"aware that this option can produce horrible results **if the original Bone " +"Rest set externally is important**. If you want to share animations with " +"keeping the original Bone Rest, consider to use the `Realtime Retarget " "Module `__." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:159 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:160 msgid "Fix Silhouette" msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:161 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:162 msgid "" "Attempts to make the model's silhouette match that of the reference poses " "defined in the :ref:`class_skeletonprofile`, such as T-Pose. This cannot fix " @@ -61209,7 +61529,7 @@ msgid "" "roll." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:164 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:165 msgid "" "With :ref:`class_skeletonprofilehumanoid`, this option does not need to be " "enabled for T-pose models, but should be enabled for A-pose models. However " @@ -61219,7 +61539,7 @@ msgid "" "example." msgstr "" -#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:171 +#: ../../docs/tutorials/assets_pipeline/retargeting_3d_skeletons.rst:172 msgid "" "Also, for models with bent knees or feet, it may be necessary to adjust the " "``scale_base_bone`` height. For that, you can use ``base_height_adjustment`` " @@ -62204,24 +62524,31 @@ msgid "" "setting, or you'll just get empty audio files." msgstr "" -#: ../../docs/tutorials/audio/recording_with_microphone.rst:18 -msgid "The structure of the demo" +#: ../../docs/tutorials/audio/recording_with_microphone.rst:17 +msgid "" +"On iOS and iPadOS, it is also important to set the advanced **Audio > " +"General > iOS > Session Category** setting to include **Record** or **Play " +"and Record**." msgstr "" #: ../../docs/tutorials/audio/recording_with_microphone.rst:20 +msgid "The structure of the demo" +msgstr "" + +#: ../../docs/tutorials/audio/recording_with_microphone.rst:22 msgid "" "The demo consists of a single scene. This scene includes two major parts: " "the GUI and the audio." msgstr "" -#: ../../docs/tutorials/audio/recording_with_microphone.rst:23 +#: ../../docs/tutorials/audio/recording_with_microphone.rst:25 msgid "" "We will focus on the audio part. In this demo, a bus named ``Record`` with " "the effect ``Record`` is created to handle the audio recording. An " "``AudioStreamPlayer`` named ``AudioStreamRecord`` is used for recording." msgstr "" -#: ../../docs/tutorials/audio/recording_with_microphone.rst:59 +#: ../../docs/tutorials/audio/recording_with_microphone.rst:61 msgid "" "The audio recording is handled by the :ref:`class_AudioEffectRecord` " "resource which has three methods: :ref:`get_recording() " @@ -62231,27 +62558,27 @@ msgid "" "`." msgstr "" -#: ../../docs/tutorials/audio/recording_with_microphone.rst:106 +#: ../../docs/tutorials/audio/recording_with_microphone.rst:108 msgid "" "At the start of the demo, the recording effect is not active. When the user " "presses the ``RecordButton``, the effect is enabled with " "``set_recording_active(true)``." msgstr "" -#: ../../docs/tutorials/audio/recording_with_microphone.rst:110 +#: ../../docs/tutorials/audio/recording_with_microphone.rst:112 msgid "" "On the next button press, as ``effect.is_recording_active()`` is ``true``, " "the recorded stream can be stored into the ``recording`` variable by calling " "``effect.get_recording()``." msgstr "" -#: ../../docs/tutorials/audio/recording_with_microphone.rst:142 +#: ../../docs/tutorials/audio/recording_with_microphone.rst:144 msgid "" "To playback the recording, you assign the recording as the stream of the " "``AudioStreamPlayer`` and call ``play()``." msgstr "" -#: ../../docs/tutorials/audio/recording_with_microphone.rst:162 +#: ../../docs/tutorials/audio/recording_with_microphone.rst:164 msgid "" "To save the recording, you call ``save_to_wav()`` with the path to a file. " "In this demo, the path is defined by the user via a ``LineEdit`` input box." @@ -62347,7 +62674,7 @@ msgid "Distro-specific one-liners" msgstr "" #: ../../docs/tutorials/audio/text_to_speech.rst:80 -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:375 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:420 msgid "**Arch Linux**" msgstr "" @@ -63172,7 +63499,7 @@ msgid "**Feature tag**" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:43 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:97 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:101 msgid "**android**" msgstr "" @@ -63181,7 +63508,7 @@ msgid "Running on Android (but not within a Web browser)" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:45 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:93 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:97 msgid "**bsd**" msgstr "" @@ -63190,7 +63517,7 @@ msgid "Running on \\*BSD (but not within a Web browser)" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:47 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:91 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:95 msgid "**linux**" msgstr "" @@ -63199,7 +63526,7 @@ msgid "Running on Linux (but not within a Web browser)" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:49 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:89 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:93 msgid "**macos**" msgstr "" @@ -63208,7 +63535,7 @@ msgid "Running on macOS (but not within a Web browser)" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:51 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:99 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:103 msgid "**ios**" msgstr "" @@ -63225,7 +63552,7 @@ msgid "Running on visionOS (but not within a Web browser)" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:55 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:87 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:91 msgid "**windows**" msgstr "" @@ -63234,7 +63561,7 @@ msgid "Running on Windows" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:57 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:95 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:99 msgid "**linuxbsd**" msgstr "" @@ -63243,7 +63570,7 @@ msgid "Running on Linux or \\*BSD" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:59 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:110 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:114 msgid "**debug**" msgstr "" @@ -63252,7 +63579,7 @@ msgid "Running on a debug build (including the editor)" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:61 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:112 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:116 msgid "**release**" msgstr "" @@ -63261,7 +63588,7 @@ msgid "Running on a release build" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:63 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:114 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:118 msgid "**editor**" msgstr "" @@ -63294,7 +63621,7 @@ msgid "Running on a non-editor (export template) build" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:71 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:123 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:127 msgid "**double**" msgstr "" @@ -63303,7 +63630,7 @@ msgid "Running on a double-precision build" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:73 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:125 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:129 msgid "**single**" msgstr "" @@ -63328,7 +63655,7 @@ msgid "Running on a 32-bit build (any architecture)" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:79 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:127 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:131 msgid "**x86_64**" msgstr "" @@ -63353,7 +63680,7 @@ msgid "Running on an x86 build (any bitness)" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:85 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:129 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:133 msgid "**arm64**" msgstr "" @@ -63378,7 +63705,7 @@ msgid "Running on an ARM build (any bitness)" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:91 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:131 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:135 msgid "**rv64**" msgstr "" @@ -63387,7 +63714,7 @@ msgid "Running on a 64-bit RISC-V build" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:93 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:133 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:137 msgid "**riscv**" msgstr "" @@ -63428,7 +63755,7 @@ msgid "Running on a 64-bit WebAssembly build (not yet possible)" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:103 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:135 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:139 msgid "**wasm32**" msgstr "" @@ -63461,7 +63788,7 @@ msgid "Host OS is a PC platform (desktop/laptop)" msgstr "" #: ../../docs/tutorials/export/feature_tags.rst:111 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:101 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:105 msgid "**web**" msgstr "" @@ -64155,6 +64482,7 @@ msgstr "" #: ../../docs/tutorials/export/exporting_for_macos.rst:102 #: ../../docs/tutorials/export/exporting_for_macos.rst:122 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1515 msgid "Option" msgstr "" @@ -64373,8 +64701,8 @@ msgid "" msgstr "" #: ../../docs/tutorials/export/exporting_for_macos.rst:169 -#: ../../docs/tutorials/io/data_paths.rst:89 -#: ../../docs/tutorials/io/data_paths.rst:145 +#: ../../docs/tutorials/io/data_paths.rst:91 +#: ../../docs/tutorials/io/data_paths.rst:147 msgid "Location" msgstr "" @@ -64471,6 +64799,7 @@ msgstr "" #: ../../docs/tutorials/export/exporting_for_macos.rst:200 #: ../../docs/tutorials/xr/openxr_settings.rst:16 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:38 msgid "Enabled" msgstr "" @@ -64724,7 +65053,7 @@ msgid "Android SDK Platform-Tools version 35.0.0 or later" msgstr "" #: ../../docs/tutorials/export/exporting_for_android.rst:41 -msgid "Android SDK Build-Tools version 35.0.0" +msgid "Android SDK Build-Tools version 35.0.1" msgstr "" #: ../../docs/tutorials/export/exporting_for_android.rst:42 @@ -65472,11 +65801,11 @@ msgstr "" #: ../../docs/tutorials/export/exporting_for_web.rst:76 msgid "" -"Godot 4.0 and later can only target WebGL 2.0 (using the Compatibility " -"rendering method). Forward+/Mobile are not supported on the web platform, as " -"these rendering methods are designed around modern low-level graphics APIs. " -"Godot currently does not support WebGPU, which is a prerequisite for " -"allowing Forward+/Mobile to run on the web platform." +"Godot 4 can only target WebGL 2.0 (using the Compatibility rendering " +"method). Forward+/Mobile are not supported on the web platform, as these " +"rendering methods are designed around modern low-level graphics APIs. Godot " +"currently does not support WebGPU, which is a prerequisite for allowing " +"Forward+/Mobile to run on the web platform." msgstr "" #: ../../docs/tutorials/export/exporting_for_web.rst:82 @@ -67046,7 +67375,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/export/exporting_for_dedicated_servers.rst:276 -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:720 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:652 msgid "Next steps" msgstr "" @@ -67139,7 +67468,7 @@ msgstr "" #: ../../docs/tutorials/io/background_loading.rst:42 #: ../../docs/tutorials/scripting/gdscript/gdscript_documentation_comments.rst:247 #: ../../docs/tutorials/scripting/gdscript/gdscript_styleguide.rst:647 -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:221 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:222 #: ../../docs/tutorials/scripting/cpp/gdextension_docs_system.rst:96 #: ../../docs/tutorials/shaders/visual_shaders.rst:134 #: ../../docs/tutorials/ui/bbcode_in_richtextlabel.rst:241 @@ -67285,11 +67614,11 @@ msgid "" "following path: ``res://character.png``." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:58 +#: ../../docs/tutorials/io/data_paths.rst:60 msgid "Accessing persistent user data (``user://``)" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:60 +#: ../../docs/tutorials/io/data_paths.rst:62 msgid "" "To store persistent data files, like the player's save or settings, you want " "to use ``user://`` instead of ``res://`` as your path's prefix. This is " @@ -67297,7 +67626,7 @@ msgid "" "read-only." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:64 +#: ../../docs/tutorials/io/data_paths.rst:66 msgid "" "The ``user://`` prefix points to a different directory on the user's device. " "Unlike ``res://``, the directory pointed at by ``user://`` is created " @@ -67305,13 +67634,13 @@ msgid "" "project." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:68 +#: ../../docs/tutorials/io/data_paths.rst:70 msgid "" "The location of the ``user://`` folder depends on what is configured in the " "Project Settings:" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:71 +#: ../../docs/tutorials/io/data_paths.rst:73 msgid "" "By default, the ``user://`` folder is created within Godot's :ref:`editor " "data path ` in the ``app_userdata/" @@ -67319,7 +67648,7 @@ msgid "" "projects stay self-contained within Godot's data folder." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:75 +#: ../../docs/tutorials/io/data_paths.rst:77 msgid "" "If :ref:`application/config/use_custom_user_dir " "` is " @@ -67328,7 +67657,7 @@ msgid "" "applications data." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:80 +#: ../../docs/tutorials/io/data_paths.rst:82 msgid "" "By default, the folder name will be inferred from the project name, but it " "can be further customized with :ref:`application/config/custom_user_dir_name " @@ -67337,12 +67666,12 @@ msgid "" "projects of a given studio with a ``Studio Name/Game Name`` structure." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:86 +#: ../../docs/tutorials/io/data_paths.rst:88 msgid "On desktop platforms, the actual directory paths for ``user://`` are:" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:89 -#: ../../docs/tutorials/io/data_paths.rst:145 +#: ../../docs/tutorials/io/data_paths.rst:91 +#: ../../docs/tutorials/io/data_paths.rst:147 #: ../../docs/tutorials/io/binary_serialization_api.rst:45 #: ../../docs/tutorials/io/binary_serialization_api.rst:122 #: ../../docs/tutorials/io/binary_serialization_api.rst:133 @@ -67384,7 +67713,7 @@ msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_styleguide.rst:647 #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:18 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:25 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:868 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:876 #: ../../docs/tutorials/shaders/visual_shaders.rst:131 #: ../../docs/tutorials/shaders/converting_glsl_to_godot_shaders.rst:91 #: ../../docs/tutorials/shaders/converting_glsl_to_godot_shaders.rst:164 @@ -67393,7 +67722,7 @@ msgstr "" msgid "Type" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:91 +#: ../../docs/tutorials/io/data_paths.rst:93 msgid "Default" msgstr "" @@ -67410,7 +67739,7 @@ msgstr "" msgid "Linux: ``~/.local/share/godot/app_userdata/[project_name]``" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:95 +#: ../../docs/tutorials/io/data_paths.rst:97 msgid "Custom dir" msgstr "" @@ -67426,7 +67755,7 @@ msgstr "" msgid "Linux: ``~/.local/share/[project_name]``" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:99 +#: ../../docs/tutorials/io/data_paths.rst:101 msgid "Custom dir and name" msgstr "" @@ -67442,20 +67771,20 @@ msgstr "" msgid "Linux: ``~/.local/share/[custom_user_dir_name]``" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:104 +#: ../../docs/tutorials/io/data_paths.rst:106 msgid "" "``[project_name]`` is based on the application name defined in the Project " "Settings, but you can override it on a per-platform basis " "using :ref:`feature tags `." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:107 +#: ../../docs/tutorials/io/data_paths.rst:109 msgid "" "On mobile platforms, this path is unique to the project and is not " "accessible by other applications for security reasons." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:110 +#: ../../docs/tutorials/io/data_paths.rst:112 msgid "" "On HTML5 exports, ``user://`` will refer to a virtual filesystem stored on " "the device via IndexedDB. (Interaction with the main filesystem can still be " @@ -67463,19 +67792,19 @@ msgid "" "singleton.)" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:115 +#: ../../docs/tutorials/io/data_paths.rst:117 msgid "File logging" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:119 +#: ../../docs/tutorials/io/data_paths.rst:121 msgid "Documentation on file logging has been moved to :ref:`doc_logging`." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:122 +#: ../../docs/tutorials/io/data_paths.rst:124 msgid "Converting paths to absolute paths or \"local\" paths" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:124 +#: ../../docs/tutorials/io/data_paths.rst:126 msgid "" "You can use :ref:`ProjectSettings.globalize_path() " "` to convert a \"local\" path " @@ -67486,7 +67815,7 @@ msgid "" "` since it only accepts native OS paths." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:131 +#: ../../docs/tutorials/io/data_paths.rst:133 msgid "" "To convert an absolute OS path to a \"local\" path starting with ``res://`` " "or ``user://``, use :ref:`ProjectSettings.localize_path() " @@ -67495,17 +67824,17 @@ msgid "" "folders." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:139 +#: ../../docs/tutorials/io/data_paths.rst:141 msgid "Editor data paths" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:141 +#: ../../docs/tutorials/io/data_paths.rst:143 msgid "" "The editor uses different paths for editor data, editor settings, and cache, " "depending on the platform. By default, these paths are:" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:147 +#: ../../docs/tutorials/io/data_paths.rst:149 msgid "Editor data" msgstr "" @@ -67521,7 +67850,7 @@ msgstr "" msgid "Linux: ``~/.local/share/godot/``" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:151 +#: ../../docs/tutorials/io/data_paths.rst:153 msgid "Editor settings" msgstr "" @@ -67529,7 +67858,7 @@ msgstr "" msgid "Linux: ``~/.config/godot/``" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:155 +#: ../../docs/tutorials/io/data_paths.rst:157 msgid "Cache" msgstr "" @@ -67545,24 +67874,24 @@ msgstr "" msgid "Linux: ``~/.cache/godot/``" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:160 +#: ../../docs/tutorials/io/data_paths.rst:162 msgid "**Editor data** contains export templates and project-specific data." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:161 +#: ../../docs/tutorials/io/data_paths.rst:163 msgid "" "**Editor settings** contains the main editor settings configuration file as " "well as various other user-specific customizations (editor layouts, feature " "profiles, script templates, etc.)." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:164 +#: ../../docs/tutorials/io/data_paths.rst:166 msgid "" "**Cache** contains data generated by the editor, or stored temporarily. It " "can safely be removed when Godot is closed." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:167 +#: ../../docs/tutorials/io/data_paths.rst:169 msgid "" "Godot complies with the `XDG Base Directory Specification `__ on " @@ -67571,18 +67900,18 @@ msgid "" "project data paths." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:173 +#: ../../docs/tutorials/io/data_paths.rst:175 msgid "" "If you use `Godot packaged as a Flatpak `__, the editor data paths will be located in " "subfolders in ``~/.var/app/org.godotengine.Godot/``." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:181 +#: ../../docs/tutorials/io/data_paths.rst:183 msgid "Self-contained mode" msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:183 +#: ../../docs/tutorials/io/data_paths.rst:185 msgid "" "If you create a file called ``._sc_`` or ``_sc_`` in the same directory as " "the editor binary (or in `MacOS/Contents/` for a macOS editor .app bundle), " @@ -67592,13 +67921,13 @@ msgid "" "installation of the editor." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:190 +#: ../../docs/tutorials/io/data_paths.rst:192 msgid "" "The `Steam release of Godot `__ " "uses self-contained mode by default." msgstr "" -#: ../../docs/tutorials/io/data_paths.rst:198 +#: ../../docs/tutorials/io/data_paths.rst:200 msgid "" "Self-contained mode is not supported in exported projects yet. To read and " "write files relative to the executable path, " @@ -68069,17 +68398,15 @@ msgid "" "using the :ref:`class_fbxdocument` and :ref:`class_fbxstate` classes. The " "code to do so is the same as glTF, but you will need to replace all " "instances of ``GLTFDocument`` and ``GLTFState`` with ``FBXDocument`` and " -"``FBXState`` in the code samples below. There are `known issues `__ with runtime FBX loading, so " -"using glTF instead is preferred for now." +"``FBXState`` in the code samples below." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:232 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:231 msgid "" "Example of loading a glTF scene and appending its root node to the scene:" msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:289 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:288 msgid "" "When loading a glTF scene, a *base path* must be set so that external " "resources like textures can be loaded correctly. When loading from a file, " @@ -68088,7 +68415,7 @@ msgid "" "way for Godot to infer this path." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:295 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:294 msgid "" "To set the base path, set :ref:`GLTFState.base_path " "` on your GLTFState instance *before* " @@ -68098,40 +68425,40 @@ msgid "" "`." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:304 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:303 msgid "Fonts" msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:306 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:305 msgid "" ":ref:`FontFile.load_dynamic_font ` " "supports the following font file formats: TTF, OTF, WOFF, WOFF2, PFB, PFM" msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:309 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:308 msgid "" "On the other hand, :ref:`FontFile.load_bitmap_font " "` supports the `BMFont `__ format (``.fnt`` or ``.font``)." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:312 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:311 msgid "" "Additionally, it is possible to load any font that is installed on the " "system using Godot's support for :ref:`doc_using_fonts_system_fonts`." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:315 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:314 msgid "" "Example of loading a font file automatically according to its file " "extension, then adding it as a theme override to a :ref:`class_Label` node:" msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:374 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:373 msgid "ZIP archives" msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:376 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:375 msgid "" "Godot supports reading and writing ZIP archives using " "the :ref:`class_zipreader` and :ref:`class_zippacker` classes. This supports " @@ -68140,7 +68467,7 @@ msgid "" "than the original project files)." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:383 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:382 msgid "" "Use :ref:`ProjectSettings.load_resource_pack " "` to load PCK or ZIP files " @@ -68149,14 +68476,14 @@ msgid "" "packs seamless (virtual filesystem)." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:388 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:387 msgid "" "This ZIP archive support can be combined with runtime image, 3D scene and " "audio loading to provide a seamless modding experience without requiring " "users to go through the Godot editor to generate PCK/ZIP files." msgstr "" -#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:392 +#: ../../docs/tutorials/io/runtime_file_loading_and_saving.rst:391 msgid "" "Example that lists files in a ZIP archive in an :ref:`class_ItemList` node, " "then writes contents read from it to a new ZIP archive (essentially " @@ -68267,7 +68594,7 @@ msgid "vector2" msgstr "" #: ../../docs/tutorials/io/binary_serialization_api.rst:59 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:505 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:513 msgid "6" msgstr "" @@ -68276,7 +68603,7 @@ msgid "rect2" msgstr "" #: ../../docs/tutorials/io/binary_serialization_api.rst:61 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:507 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:515 msgid "7" msgstr "" @@ -68306,7 +68633,7 @@ msgstr "" #: ../../docs/tutorials/io/binary_serialization_api.rst:520 #: ../../docs/tutorials/io/binary_serialization_api.rst:542 #: ../../docs/tutorials/rendering/renderers.rst:207 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:509 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:517 msgid "8" msgstr "" @@ -68315,7 +68642,7 @@ msgid "transform2d" msgstr "" #: ../../docs/tutorials/io/binary_serialization_api.rst:65 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:511 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:519 msgid "9" msgstr "" @@ -69325,7 +69652,7 @@ msgid "" "collection of tips and tricks." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:15 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:14 msgid "" "Localization is usually done by specific studios hired for the job. Despite " "the huge amount of software and file formats available for this, the most " @@ -69336,49 +69663,49 @@ msgid "" "reading this page." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:23 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:22 msgid "" "We will be using the official demo as an example; you can `download it from " "the Asset Library `_." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:27 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:28 msgid "Configuring the imported translation" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:29 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:30 msgid "" "Translations can get updated and re-imported when they change, but they " -"still have to be added to the project. This is done in **Project → Project " -"Settings → Localization**:" +"still have to be added to the project. This is done in :menu:`Project > " +"Project Settings > Localization > Translations`:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:35 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:36 msgid "The above dialog is used to add or remove translations project-wide." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:38 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:39 msgid "Localizing resources" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:40 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:41 msgid "" "It is also possible to instruct Godot to use alternate versions of assets " "(resources) depending on the current language. This can be used for " "localized images such as in-game billboards or localized voices." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:44 -msgid "The **Remaps** tab can be used for this:" +#: ../../docs/tutorials/i18n/internationalizing_games.rst:45 +msgid "The :ui:`Remaps` tab can be used for this:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:48 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:49 msgid "" "Select the resource to be remapped then add some alternatives for each " "locale." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:52 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:53 msgid "" "The resource remapping system isn't supported for DynamicFonts. To use " "different fonts depending on the language's script, use the DynamicFont " @@ -69386,77 +69713,88 @@ msgid "" "want." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:57 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:58 msgid "" "The upside of the DynamicFont fallback system is that it works regardless of " "the current language, making it ideal for things like multiplayer chat where " "the text language may not match the client's language." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:62 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:63 msgid "Automatically setting a language" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:63 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:65 msgid "" "It is recommended to default to the user's preferred language which can be " "obtained via :ref:`OS.get_locale_language() " "`. If your game is not available in " "that language, it will fall back to the :ref:`Fallback " -"` in " -"**Project Settings > Internationalization > Locale**, or to ``en`` if empty. " -"Nevertheless letting players change the language in game is recommended for " -"various reasons (e.g. translation quality or player preference)." +"` " +"in :menu:`Project > Project Settings > General > Internationalization > " +"Locale`, or to ``en`` if empty. Nevertheless, letting players change the " +"language in game is recommended for various reasons (e.g. translation " +"quality or player preference)." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:80 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:85 msgid "Locale vs. language" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:81 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:87 msgid "" "A :ref:`locale ` is commonly a combination of a language with a " "region or country, but can also contain information like a script or a " "variant." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:83 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:90 #: ../../docs/tutorials/inputs/input_examples.rst:29 #: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:509 msgid "Examples:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:85 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:92 msgid "``en``: English language" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:86 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:93 msgid "``en_GB``: English in Great Britain / British English" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:87 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:94 msgid "``en_US``: English in the USA / American English" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:88 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:95 msgid "``en_DE``: English in Germany" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:90 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:97 msgid "" "Indie games generally only need to care about language, but read on for more " "information." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:92 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:100 msgid "" "Why locales exist can be illustrated through the USA and Great Britain. Both " -"speak the same language (English), yet differ in many aspects: - Spelling: " -"E.g. gray (USA), grey (GB) - Use of words: E.g. eggplant (USA), aubergine " -"(GB) - Units or currencies: E.g. feet/inches (USA), metres/cm (GB)" +"speak the same language (English), yet differ in many aspects:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:97 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:103 +msgid "Spelling: e.g. gray (USA), grey (GB)" +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:104 +msgid "Use of words: e.g. eggplant (USA), aubergine (GB)" +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:105 +msgid "Units or currencies: e.g. feet/inches (USA), metres/cm (GB)" +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:107 msgid "" "It can get more complex however. Imagine you offer different content in " "Europe and in China (e.g. in an MMO). You will need to translate each of " @@ -69464,36 +69802,36 @@ msgid "" "accordingly." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:100 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:112 msgid "Converting keys to text" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:102 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:114 msgid "" "Some controls, such as :ref:`Button ` and :ref:`Label " "`, will automatically fetch a translation if their text matches " "a translation key. For example, if a label's text is " -"\"MAIN_SCREEN_GREETING1\" and that key exists in the current translation, " +"``MAIN_SCREEN_GREETING1`` and that key exists in the current translation, " "then the text will automatically be translated." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:107 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:119 msgid "" "This automatic translation behavior may be undesirable in certain cases. For " "instance, when using a Label to display a player's name, you most likely " "don't want the player's name to be translated if it matches a translation " -"key. To disable automatic translation on a specific node, disable " -"**Localization > Auto Translate** in the inspector." +"key. To disable automatic translation on a specific node, set the :ui:`Auto " +"Translate > Mode` to ``Disabled`` in the inspector." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:113 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:125 msgid "" "In code, the :ref:`Object.tr() ` function can be " "used. This will just look up the text in the translations and convert it if " "found:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:129 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:141 msgid "" "If no text is displayed after changing the language, try to use a different " "font. The default project font only supports a subset of the Latin-1 " @@ -69501,14 +69839,14 @@ msgid "" "Chinese." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:133 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:145 msgid "" "A good resource for multilingual fonts is `Noto Fonts `__. Make sure to download the correct variation if " "you're using a less common language." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:137 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:149 msgid "" "Once you've downloaded the font, load the TTF file into a DynamicFont " "resource and use it as a custom font of your Control node. For better " @@ -69516,11 +69854,11 @@ msgid "" "define the DynamicFont as the Default Font in the theme." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:143 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:155 msgid "Placeholders" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:145 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:157 msgid "" "To feature placeholders in your translated strings, " "use :ref:`doc_gdscript_printf` or the equivalent feature in C#. This lets " @@ -69530,11 +69868,11 @@ msgid "" "allow translators to choose the *order* in which placeholders appear:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:164 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:178 msgid "Translation contexts" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:166 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:180 msgid "" "If you're using plain English as source strings (rather than message codes " "``LIKE_THIS``), you may run into ambiguities when you have to translate the " @@ -69544,11 +69882,11 @@ msgid "" "string is identical:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:191 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:207 msgid "Pluralization" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:193 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:209 msgid "" "Most languages require different strings depending on whether an object is " "in singular or plural form. However, hardcoding the \"is plural\" condition " @@ -69556,35 +69894,29 @@ msgid "" "languages." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:197 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:213 msgid "" "Some languages have more than two plural forms, and the rules on the number " "of objects required for each plural form vary. Godot offers support for " "*pluralization* so that the target locales can handle this automatically." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:201 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:217 msgid "" "Pluralization is meant to be used with positive (or zero) integer numbers " "only. Negative and floating-point values usually represent physical entities " "for which singular and plural don't clearly apply." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:216 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:232 msgid "This can be combined with a context if needed:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:231 -msgid "" -"Providing pluralized translations is only supported " -"with :ref:`doc_localization_using_gettext`, not CSV." -msgstr "" - -#: ../../docs/tutorials/i18n/internationalizing_games.rst:235 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:246 msgid "Making controls resizable" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:237 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:248 msgid "" "The same text in different languages can vary greatly in length. For this, " "make sure to read the tutorial on :ref:`doc_size_and_anchors`, as " @@ -69593,7 +69925,7 @@ msgid "" "available in :ref:`Label `." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:243 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:254 msgid "" "To check whether your UI can accommodate translations with longer strings " "than the original, you can enable :ref:`pseudolocalization " @@ -69604,31 +69936,31 @@ msgid "" "they keep working when pseudolocalization is enabled." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:251 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:262 msgid "" "For example, the string ``Hello world, this is %s!`` becomes ``[Ĥéłłô ŵôŕłd́, " "ŧh̀íš íš %s!]`` when pseudolocalization is enabled." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:254 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:265 msgid "" "While looking strange at first, pseudolocalization has several benefits:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:256 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:267 msgid "" "It lets you spot non-localizable strings quickly, so you can go over them " "and make them localizable (if it makes sense to do so)." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:258 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:269 msgid "" "It lets you check UI elements that can't fit long strings. Many languages " "will feature much longer translations than the source text, so it's " "important to ensure your UI can accommodate longer-than-usual strings." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:261 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:272 msgid "" "It lets you check whether your font contains all the characters required to " "support various languages. However, since the goal of pseudolocalization is " @@ -69637,17 +69969,17 @@ msgid "" "or right-to-left languages." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:267 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:278 msgid "" "The project settings allow you to tune pseudolocalization behavior, so that " "you can disable parts of it if desired." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:271 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:282 msgid "TranslationServer" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:273 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:284 msgid "" "Godot has a server handling low-level translation management called " "the :ref:`TranslationServer `. Translations can be " @@ -69655,11 +69987,11 @@ msgid "" "runtime." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:281 -msgid "Bidirectional text and UI Mirroring" +#: ../../docs/tutorials/i18n/internationalizing_games.rst:292 +msgid "Bidirectional text and UI mirroring" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:283 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:294 msgid "" "Arabic and Hebrew are written from right to left (except for the numbers and " "Latin words mixed in), and the user interface for these languages should be " @@ -69667,86 +69999,89 @@ msgid "" "on the surrounding characters." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:287 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:298 msgid "" "Support for bidirectional writing systems and UI mirroring is transparent, " "you don't usually need to change anything or have any knowledge of the " "specific writing system." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:290 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:301 msgid "" "For RTL languages, Godot will automatically do the following changes to the " "UI:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:292 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:303 msgid "Mirrors left/right anchors and margins." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:293 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:304 msgid "Swaps left and right text alignment." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:294 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:305 msgid "" "Mirrors horizontal order of the child controls in the containers, and items " "in Tree/ItemList controls." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:295 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:307 msgid "" -"Uses mirrored order of the internal control elements (e.g. OptionButton " -"dropdown button, checkbox alignment, List column order, Tree item icons and " -"connecting line alignment, e.t.c.), in some cases mirrored controls use " +"Uses mirrored order of the internal control elements (e.g., OptionButton " +"dropdown button, CheckBox/CheckButton alignment, List column order, TreeItem " +"icons and connecting line alignment). In some cases, mirrored controls use " "separate theme styles." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:296 -msgid "" -"Coordinate system is not mirrored, and non-UI nodes (sprites, e.t.c) are not " -"affected." +#: ../../docs/tutorials/i18n/internationalizing_games.rst:311 +msgid "Coordinate system is **not** mirrored." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:298 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:312 +msgid "Non-UI nodes (sprites, etc.) are **not** affected." +msgstr "" + +#: ../../docs/tutorials/i18n/internationalizing_games.rst:314 msgid "" "It is possible to override text and control layout direction by using the " "following control properties:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:300 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:317 msgid "" -"``text_direction``, sets the base text direction. When set to \"auto\", " +"``text_direction``, sets the base text direction. When set to \"auto\", the " "direction depends on the first strong directional character in the text " -"according to the Unicode Bidirectional Algorithm," +"according to the Unicode Bidirectional Algorithm." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:301 -msgid "``language``, overrides current project locale." +#: ../../docs/tutorials/i18n/internationalizing_games.rst:320 +msgid "``language``, overrides the current project locale." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:302 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:321 msgid "" -"``structured_text_bidi_override`` property and ``_structured_text_parser`` " -"callback, enables special handling for structured text." +"The ``structured_text_bidi_override`` property and " +"``_structured_text_parser`` callback, enable special handling for structured " +"text." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:303 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:323 msgid "``layout_direction``, overrides control mirroring." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:309 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:329 msgid "" "You can see how right-to-left typesetting works in action using the `BiDI " "and Font Features demo project `__." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:313 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:333 msgid "Adding break iterator data to exported project" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:315 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:335 msgid "" "Some languages are written without spaces. In those languages, word and line " "breaking require more than rules over character sequences. Godot includes " @@ -69754,25 +70089,25 @@ msgid "" "included in exported projects by default." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:320 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:340 msgid "" -"To include it, go to **Project → Project Settings**, enable " -"**Internationalization → Locale → Include Text Server Data**, then export " -"the project. Break iterator data is about 4 MB in size." +"To include it, go to :menu:`Project > Project Settings > General > " +"Internationalization > Locale` and enable :ui:`Include Text Server Data`, " +"then export the project. Break iterator data is about 4 MB in size." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:324 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:345 msgid "Structured text BiDi override" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:326 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:347 msgid "" "Unicode BiDi algorithm is designed to work with natural text and it's " "incapable of handling text with the higher level order, like file names, " "URIs, email addresses, regular expressions or source code." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:332 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:353 msgid "" "For example, the path for this shown directory structure will be displayed " "incorrectly (top \"LineEdit\" control). \"File\" type structured text " @@ -69781,17 +70116,17 @@ msgid "" "and preserve correct order of the folders (bottom \"LineEdit\" control)." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:337 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:358 msgid "" "Custom callbacks provide a way to override BiDi for the other types of " "structured text." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:340 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:361 msgid "Localizing numbers" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:342 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:363 msgid "" "Controls specifically designed for number input or output (e.g. ProgressBar, " "SpinBox) will use localized numbering system automatically, for the other " @@ -69802,80 +70137,79 @@ msgid "" "` to convert it back." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:350 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:371 msgid "Localizing icons and images" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:352 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:373 msgid "" "Icons with left and right pointing arrows which may need to be reversed for " "Arabic and Hebrew locales, in case they indicate movement or direction (e.g. " "back/forward buttons). Otherwise, they can remain the same." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:357 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:378 msgid "Testing translations" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:359 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:380 msgid "" "You may want to test a project's translation before releasing it. Godot " "provides three ways to do this." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:362 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:383 msgid "" -"First, in the Project Settings, under :menu:`Internationalization > Locale` " -"(with advanced settings enabled), there is a **Test** property. Set this " +"Under :menu:`Project > Project Settings > General > Internationalization > " +"Locale` (with advanced settings enabled) is a :ui:`Test` property. Set this " "property to the locale code of the language you want to test. Godot will run " "the project with that locale when the project is run (either from the editor " "or when exported)." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:369 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:390 msgid "" "Keep in mind that since this is a project setting, it will show up in " "version control when it is set to a non-empty value. Therefore, it should be " "set back to an empty value before committing changes to version control." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:373 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:394 msgid "" "Second, from within the editor go to the top bar and click on :button:`View` " "on the top bar, then go down to :ui:`Preview Translation` and select the " "language you want to preview." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:378 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:399 msgid "" "All text in scenes in the editor should now be displayed using the selected " "language." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:380 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:401 msgid "" "Translations can also be tested when :ref:`running Godot from the command " "line `. For example, to test a game in French, " "the following argument can be supplied:" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:389 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:410 msgid "Translating the project name" msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:391 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:412 msgid "" "The project name becomes the app name when exporting to different operating " "systems and platforms. To specify the project name in more than one language " -"go to **Project > Project Settings> Application > Config**. From here click " -"on the button that says ``Localizable String (Size 0)``. Now there should be " -"a button below that which says ``Add Translation``. Click on that and it " -"will take you to a page where you can choose the language (and country if " -"needed) for your project name translation. After doing that you can now type " -"in the localized name." +"go to :menu:`Project > Project Settings > General > Application > Config`. " +"From here click on the :button:`Localizable String (Size 0)` button, then " +"the :button:`Add Translation` button. It will take you to a page where you " +"can choose the language (and country if needed) for your project name " +"translation. After doing that you can now type in the localized name." msgstr "" -#: ../../docs/tutorials/i18n/internationalizing_games.rst:402 +#: ../../docs/tutorials/i18n/internationalizing_games.rst:423 msgid "" "If you are unsure about the language code to use, refer to the :ref:`list of " "locale codes `." @@ -69957,13 +70291,13 @@ msgstr "" msgid "" "The \"lang\" tags must represent a language, which must be one of " "the :ref:`valid locales ` supported by the engine, or they must " -"start with an underscore (`_`), which means the related column is served as " -"comment and won't be imported. The \"KEY\" tags must be unique and represent " -"a string universally (they are usually in uppercase, to differentiate from " -"other strings). These keys will be replaced at runtime by the matching " -"translated string. Note that the case is important, \"KEY1\" and \"Key1\" " -"will be different keys. The top-left cell is ignored and can be left empty " -"or having any content. Here's an example:" +"start with an underscore (``_``), which means the related column is served " +"as comment and won't be imported. The ``KEY`` tags must be unique and " +"represent a string universally. By convention, these are usually in " +"uppercase to differentiate them from other strings. These keys will be " +"replaced at runtime by the matching translated string. Note that the case is " +"important: ``KEY1`` and ``Key1`` will be different keys. The top-left cell " +"is ignored and can be left empty or having any content. Here's an example:" msgstr "" #: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:48 @@ -70059,31 +70393,98 @@ msgid "" msgstr "" #: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:78 -msgid "CSV importer" +msgid "Specifying plural forms" msgstr "" #: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:80 msgid "" +"Since Godot 4.6, it is possible to specify :ref:`plural forms " +"` in CSV files." +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:83 +msgid "" +"This is done by adding a column named ``?plural`` anywhere in the table " +"(except on the first column, which is reserved for translation keys). By " +"convention, it's recommended to place it on the second column. Note that in " +"the example below, the key column is the one that contains English " +"localization." +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:99 +msgid "" +"Automatic Control translation is not supported when using plural forms. You " +"must translate the string manually " +"using :ref:`tr_n()`." +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:103 +msgid "Specifying translation contexts" +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:105 +msgid "" +"Since Godot 4.6, it is possible to specify :ref:`translation contexts " +"` in CSV files. This can " +"be used to disambiguate identical source strings that have different " +"meanings. While this is generally not needed when using translation keys " +"``LIKE_THIS``, it's useful when using plain English text as translation keys." +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:111 +msgid "" +"This is done by adding a column named ``?context`` column anywhere in the " +"table (except on the first column, which is reserved for translation keys). " +"By convention, it's recommended to place it on the second column, or after " +"``?plural`` if it's also used. Note that in the example below, the key " +"column is the one that contains English localization." +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:125 +msgid "" +"Automatic Control translation is not supported when using context. You must " +"translate the string manually using :ref:`tr() ` " +"or :ref:`tr_n() `." +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:130 +msgid "CSV importer" +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:132 +msgid "" "Godot will treat CSV files as translations by default. It will import them " "and generate one or more compressed translation resource files next to it." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:83 +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:135 msgid "" "Importing will also add the translation to the list of translations to load " "when the game runs, specified in project.godot (or the project settings). " "Godot allows loading and removing translations at runtime as well." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:88 +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:140 msgid "" -"Select the ``.csv`` file and access the **Import** dock to define import " +"Select the ``.csv`` file and access the :ui:`Import` dock to define import " "options. You can toggle the compression of the imported translations, and " "select the delimiter to use when parsing the CSV file." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:94 -msgid "Be sure to click **Reimport** after any change to these options." +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:146 +msgid "Be sure to click :button:`Reimport` after any change to these options." +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:149 +msgid "Loading the CSV file as a translation" +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_spreadsheets.rst:151 +msgid "" +"Once a CSV file is imported, it is **not** automatically registered as a " +"translation source for the project. Remember to follow the steps described " +"in :ref:`doc_internationalizing_games_configuring_imported_translation` so " +"that the translation is actually used when running the project." msgstr "" #: ../../docs/tutorials/i18n/localization_using_gettext.rst:4 @@ -70095,7 +70496,7 @@ msgid "" "In addition to importing translations in :ref:`CSV format " "`, Godot also supports loading " "translation files written in the GNU gettext format (text-based ``.po`` and " -"compiled ``.mo`` since Godot 4.0)." +"compiled ``.mo``)." msgstr "" #: ../../docs/tutorials/i18n/localization_using_gettext.rst:11 @@ -70117,43 +70518,39 @@ msgid "" "gettext is a standard format, which can be edited using any text editor or " "GUI editors such as `Poedit `_. This can be significant " "as it provides a lot of tools for translators, such as marking outdated " -"strings, finding strings that haven't been translated etc." +"strings, finding strings that haven't been translated, etc." msgstr "" #: ../../docs/tutorials/i18n/localization_using_gettext.rst:25 -msgid "gettext supports plurals and context." -msgstr "" - -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:26 msgid "" "gettext is supported by translation platforms such as `Transifex `_ and `Weblate `_, which makes it " "easier for people to collaborate to localization." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:29 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:28 msgid "" "Compared to CSV, gettext files work better with version control systems like " "Git, as each locale has its own messages file." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:31 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:30 msgid "" "Multiline strings are more convenient to edit in gettext PO files compared " "to CSV files." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:35 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:34 msgid "Disadvantages" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:37 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:36 msgid "" "gettext PO files have a more complex format than CSV and can be harder to " "grasp for people new to software localization." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:39 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:38 msgid "" "People who maintain localization files will have to install gettext tools on " "their system. However, as Godot supports using text-based message files " @@ -70161,25 +70558,25 @@ msgid "" "tools." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:42 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:41 msgid "" "gettext PO files usually use English as the base language. Translators will " "use this base language to translate to other languages. You could still user " "other languages as the base language, but this is not common." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:47 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:46 msgid "Installing gettext tools" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:49 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:48 msgid "" "The command line gettext tools are required to perform maintenance " "operations, such as updating message files. Therefore, it's strongly " "recommended to install them." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:53 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:52 msgid "" "**Windows:** Download an installer from `this page `_. Any architecture " @@ -70187,84 +70584,84 @@ msgid "" "static installer." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:57 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:56 msgid "" "**macOS:** Install gettext either using `Homebrew `_ with " "the ``brew install gettext`` command, or using `MacPorts `_ with the ``sudo port install gettext`` command." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:61 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:60 msgid "" "**Linux:** On most distributions, install the ``gettext`` package from your " "distribution's package manager." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:64 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:63 msgid "" "For a GUI tool you can get Poedit from its `Official website `_. The basic version is open source and available under the MIT " "license." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:68 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:67 msgid "Creating the PO template" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:71 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:70 msgid "Automatic generation using the editor" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:73 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:72 msgid "" -"Since Godot 4.0, the editor can generate a PO template automatically from " -"specified scene and GDScript files. This POT generation also supports " -"translation contexts and pluralization if used in a script, with the " -"optional second argument of ``tr()`` and the ``tr_n()`` method." +"The editor can generate a PO template automatically from specified scene and " +"GDScript files. This POT generation also supports translation contexts and " +"pluralization if used in a script, with the optional second argument of " +"``tr()`` and the ``tr_n()`` method." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:78 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:77 msgid "" -"Open the Project Settings' **Localization > POT Generation** tab, then use " -"the **Add…** button to specify the path to your project's scenes and scripts " -"that contain localizable strings:" +"Open :menu:`Project > Project Settings > Localization > Template " +"Generation`, then use the :button:`Add…` button to specify the path to your " +"project's scenes and scripts that contain localizable strings:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:82 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:81 msgid "" -"Creating a PO template in the Localization > POT Generation tab of the " +"Creating a PO template in the Localization > Template Generation tab of the " "Project Settings" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:86 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:85 msgid "" -"Creating a PO template in the **Localization > POT Generation** tab of the " -"Project Settings" +"Creating a PO template in the :menu:`Localization > Template Generation` tab " +"of the :ui:`Project Settings`" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:88 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:87 msgid "" -"After adding at least one scene or script, click **Generate POT** in the top-" -"right corner, then specify the path to the output file. This file can be " -"placed anywhere in the project directory, but it's recommended to keep it in " -"a subdirectory such as ``locale``, as each locale will be defined in its own " -"file." +"After adding at least one scene or script, click :button:`Generate` in the " +"top-right corner, then specify the path to the output file with a ``pot`` " +"file extension. This file can be placed anywhere in the project directory, " +"but it's recommended to keep it in a subdirectory such as ``locale``, as " +"each locale will be defined in its own file." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:93 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:92 msgid "" "See :ref:`below ` for how to add " "comments for translators or exclude some strings from being added to the PO " "template for GDScript files." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:96 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:95 msgid "" "You can then move over to :ref:`creating a messages file from a PO template " "`." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:101 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:100 msgid "" "Remember to regenerate the PO template after making any changes to " "localizable strings, or after adding new scenes or scripts. Otherwise, newly " @@ -70272,11 +70669,11 @@ msgid "" "update translations for outdated strings." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:107 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:106 msgid "Manual creation" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:109 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:108 msgid "" "If the automatic generation approach doesn't work out for your needs, you " "can create a PO template by hand in a text editor. This file can be placed " @@ -70284,72 +70681,72 @@ msgid "" "subdirectory, as each locale will be defined in its own file." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:114 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:113 msgid "" "Create a directory named ``locale`` in the project directory. In this " -"directory, save a file named ``messages.pot`` with the following contents:" +"directory, save a file named ``messages.pot`` with the following content:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:138 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:137 msgid "" "Messages in gettext are made of ``msgid`` and ``msgstr`` pairs. ``msgid`` is " "the source string (usually in English), ``msgstr`` will be the translated " "string." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:144 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:143 msgid "" "The ``msgstr`` value in PO template files (``.pot``) should **always** be " "empty. Localization will be done in the generated ``.po`` files instead." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:150 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:149 msgid "Creating a messages file from a PO template" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:152 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:151 msgid "" "The ``msginit`` command is used to turn a PO template into a messages file. " "For instance, to create a French localization file, use the following " "command while in the ``locale`` directory:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:160 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:159 msgid "" "The command above will create a file named ``fr.po`` in the same directory " "as the PO template." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:163 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:162 msgid "" "Alternatively, you can do that graphically using Poedit, or by uploading the " "POT file to your web platform of choice." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:167 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:166 msgid "Loading a messages file in Godot" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:169 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:168 msgid "" -"To register a messages file as a translation in a project, open the " -"**Project Settings**, then go to the **Localization** tab. In " -"**Translations**, click **Add…** then choose the ``.po`` or ``.mo`` file in " -"the file dialog. The locale will be inferred from the ``\"Language: " -"\\n\"`` property in the messages file." +"To register a messages file as a translation in a project, open " +"the :ui:`Project Settings`, then go to :menu:`Localization > Translations`, " +"click :button:`Add…` then choose the ``.po`` or ``.mo`` file in the file " +"dialog. The locale will be inferred from the ``\"Language: \\n\"`` " +"property in the messages file." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:175 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:174 msgid "" "See :ref:`doc_internationalizing_games` for more information on importing " "and testing translations in Godot." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:179 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:178 msgid "Updating message files to follow the PO template" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:181 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:180 msgid "" "After updating the PO template, you will have to update message files so " "that they contain new strings, while removing strings that are no longer " @@ -70357,14 +70754,14 @@ msgid "" "``msgmerge`` tool:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:191 -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:316 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:190 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:332 msgid "" "If you want to keep a backup of the original message file (which would be " "saved as ``fr.po~`` in this example), remove the ``--backup=none`` argument." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:196 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:195 msgid "" "After running ``msgmerge``, strings which were modified in the source " "language will have a \"fuzzy\" comment added before them in the ``.po`` " @@ -70373,38 +70770,38 @@ msgid "" "until it's updated." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:201 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:200 msgid "" "Strings with \"fuzzy\" comments will **not** be read by Godot until the " "translation is updated and the \"fuzzy\" comment is removed." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:205 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:204 msgid "Checking the validity of a PO file or template" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:207 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:206 msgid "It is possible to check whether a gettext file's syntax is valid." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:209 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:208 msgid "" "If you open with Poeditor, it will display the appropriate warnings if " "there's some syntax errors. You can also verify by running the gettext " "command below:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:216 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:215 msgid "" "If there are syntax errors or warnings, they will be displayed in the " "console. Otherwise, ``msgfmt`` won't output anything." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:220 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:219 msgid "Using binary MO files (useful for large projects only)" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:222 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:221 msgid "" "For large projects with several thousands of strings to translate or more, " "it can be worth it to use binary (compiled) MO message files instead of text-" @@ -70412,34 +70809,34 @@ msgid "" "equivalent PO files." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:227 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:226 msgid "You can generate an MO file with the command below:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:233 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:232 msgid "" "If the PO file is valid, this command will create an ``fr.mo`` file besides " "the PO file. This MO file can then be loaded in Godot as described above." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:236 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:235 msgid "" "The original PO file should be kept in version control so you can update " "your translation in the future. In case you lose the original PO file and " "wish to decompile an MO file into a text-based PO file, you can do so with:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:244 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:243 msgid "" "The decompiled file will not include comments or fuzzy strings, as these are " "never compiled in the MO file in the first place." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:250 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:249 msgid "Extracting localizable strings from GDScript files" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:252 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:251 msgid "" "The built-in `editor plugin `_ " @@ -70447,30 +70844,30 @@ msgid "" "strings from GDScript files, including but not limited to the following:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:256 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:255 msgid "``tr()``, ``tr_n()``, ``atr()``, and ``atr_n()`` calls;" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:257 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:256 msgid "" "assigning properties ``text``, ``placeholder_text``, and ``tooltip_text``;" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:258 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:257 msgid "``add_tab()``, ``add_item()``, ``set_tab_title()``, and other calls;" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:259 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:258 msgid "``FileDialog`` filters like ``\"*.png ; PNG Images\"``." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:263 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:262 msgid "" "The argument or right operand must be a constant string, otherwise the " "plugin will not be able to evaluate the expression and will ignore it." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:266 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:265 msgid "" "If the plugin extracts unnecessary strings, you can ignore them with the " "``NO_TRANSLATE`` comment. You can also provide additional information for " @@ -70478,61 +70875,66 @@ msgid "" "placed either on the same line as the recognized pattern or precede it." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:284 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:283 msgid "Using context" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:286 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:285 msgid "" "The ``context`` parameter can be used to differentiate the situation where a " "translation is used, or to differentiate polysemic words (words with " "multiple meanings)." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:289 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:288 #: ../../docs/tutorials/platform/android/android_plugin.rst:351 #: ../../docs/tutorials/scripting/gdscript/gdscript_documentation_comments.rst:48 #: ../../docs/tutorials/scripting/gdscript/gdscript_documentation_comments.rst:103 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:144 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:148 #: ../../docs/tutorials/scripting/creating_script_templates.rst:73 -#: ../../docs/engine_details/architecture/object_class.rst:143 +#: ../../docs/engine_details/architecture/object_class.rst:157 #: ../../docs/engine_details/class_reference/index.rst:249 msgid "For example:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:299 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:297 +msgid "" +"In a gettext PO file, a string with a context can be defined as follows:" +msgstr "" + +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:312 msgid "Updating PO files" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:301 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:314 msgid "" "Some time or later, you'll add new content to our game, and there will be " "new strings that need to be translated. When this happens, you'll need to " "update the existing PO files to include the new strings." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:304 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:318 msgid "" "First, generate a new POT file containing all the existing strings plus the " "newly added strings. After that, merge the existing PO files with the new " "POT file. There are two ways to do this:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:307 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:322 msgid "" "Use a gettext editor, and it should have an option to update a PO file from " "a POT file." msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:309 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:325 msgid "Use the gettext ``msgmerge`` tool:" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:320 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:336 msgid "POT generation custom plugin" msgstr "" -#: ../../docs/tutorials/i18n/localization_using_gettext.rst:322 +#: ../../docs/tutorials/i18n/localization_using_gettext.rst:338 msgid "" "If you have any extra file format to deal with, you could write a custom " "plugin to parse and and extract the strings from the custom file. This " @@ -78979,9 +79381,9 @@ msgstr "" msgid "" "Enabling pseudolocalization and the configurations related to it is as " "simple as toggling a checkbox in the project settings. These settings can be " -"found in **Project → Project Settings → General → Internationalization → " -"Pseudolocalization** after enabling the **Advanced** toggle in the project " -"settings dialog:" +"found in :menu:`Project > Project Settings > General > Internationalization " +"> Pseudolocalization` after enabling the :button:`Advanced` toggle in the " +"project settings dialog:" msgstr "" #: ../../docs/tutorials/i18n/pseudolocalization.rst:33 @@ -80166,33 +80568,25 @@ msgid "" "Saving > Keep Screen On** in the Project Settings." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:283 -msgid "" -"On Linux, power saving prevention requires the engine to be able to use D-" -"Bus. Check whether D-Bus is installed and reachable if running the project " -"within a Flatpak, as sandboxing restrictions may make this impossible by " -"default." -msgstr "" - -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:292 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:288 msgid "" "You can view a list of `known issues with controller support `__ on GitHub." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:297 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:293 msgid "My controller isn't recognized by Godot." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:299 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:295 msgid "" "First, check that your controller is recognized by other applications. You " "can use the `Gamepad Tester `__ website " "to confirm that your controller is recognized." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:303 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:299 msgid "" "On Windows Godot only supports up to 4 controllers at a time. This is " "because Godot uses the XInput API, which is limited to supporting 4 " @@ -80200,11 +80594,11 @@ msgid "" "Godot." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:308 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:304 msgid "My controller has incorrectly mapped buttons or axes." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:310 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:306 msgid "" "First, if your controller provides some kind of firmware update utility, " "make sure to run it to get the latest fixes from the manufacturer. For " @@ -80217,7 +80611,7 @@ msgid "" "if you are using the controller in wireless mode." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:319 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:315 msgid "" "If buttons are incorrectly mapped, this may be due to an erroneous mapping " "from the SDL game controller database used by Godot or the `Godot game " @@ -80226,7 +80620,7 @@ msgid "" "custom mapping for your controller." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:324 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:320 msgid "" "There are many ways to create mappings. One option is to use the mapping " "wizard in the `official Joypads demo `__." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:355 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:351 msgid "My controller works on a given platform, but not on another platform." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:360 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:356 msgid "" "If you're using a self-compiled engine binary, make sure it was compiled " "with udev support. This is enabled by default, but it is possible to disable " @@ -80264,31 +80658,31 @@ msgid "" "whether it was compiled with udev support." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:366 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:362 msgid "" "Controllers can still work without udev support, but it is less reliable as " "regular polling must be used to check for controllers being connected or " "disconnected during gameplay (hotplugging)." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:371 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:367 msgid "Android/iOS" msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:373 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:369 msgid "" "As described at the top of the page, controller support on mobile platforms " "relies on a custom implementation instead of using SDL for input. This means " "controller support may be less reliable than on desktop platforms." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:377 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:373 msgid "" "Support for SDL-based controller input on mobile platforms is `planned " "`__ in a future release." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:384 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:380 msgid "" "Web controller support is often less reliable compared to \"native\" " "platforms. The quality of controller support tends to vary wildly across " @@ -80296,7 +80690,7 @@ msgid "" "different browser if they can't get their controller to work." msgstr "" -#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:389 +#: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:385 msgid "" "Like for mobile platforms, support for SDL-based controller input on the web " "platform is `planned `__ " @@ -86186,9 +86580,10 @@ msgid "" "and libraries. By default, Godot provides an implementation based on ENet " "(:ref:`ENetMultiplayerPeer `), one based on " "WebRTC (:ref:`WebRTCMultiplayerPeer `), and one " -"based on WebSocket (:ref:`WebSocketPeer `), but this " -"could be used to implement mobile APIs (for ad hoc WiFi, Bluetooth) or " -"custom device/console-specific networking APIs." +"based on WebSocket (:ref:`WebSocketMultiplayerPeer " +"`), but this could be used to implement " +"mobile APIs (for ad hoc WiFi, Bluetooth) or custom device/console-specific " +"networking APIs." msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:66 @@ -87140,8 +87535,8 @@ msgstr "" #: ../../docs/tutorials/performance/index.rst:86 #: ../../docs/tutorials/performance/cpu_optimization.rst:204 -#: ../../docs/tutorials/performance/using_multiple_threads.rst:7 -#: ../../docs/tutorials/performance/thread_safe_apis.rst:9 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:11 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:7 msgid "Threads" msgstr "" @@ -87833,7 +88228,17 @@ msgid "" "low-level :ref:`CanvasItem ` API." msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:146 +#: ../../docs/tutorials/performance/using_servers.rst:98 +msgid "" +"When creating canvas items using the RenderingServer, you should reset " +"physics interpolation on the first frame " +"using :ref:`RenderingServer.canvas_item_reset_physics_interpolation() " +"`. " +"This ensures proper synchronization between the rendering and physics " +"systems." +msgstr "" + +#: ../../docs/tutorials/performance/using_servers.rst:151 msgid "" "The Canvas Item API in the server allows you to add draw primitives to it. " "Once added, they can't be modified. The Item needs to be cleared and the " @@ -87841,43 +88246,43 @@ msgid "" "can be done as many times as desired)." msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:150 +#: ../../docs/tutorials/performance/using_servers.rst:155 msgid "Primitives are cleared this way:" msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:163 +#: ../../docs/tutorials/performance/using_servers.rst:168 msgid "Instantiating a Mesh into 3D space" msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:165 +#: ../../docs/tutorials/performance/using_servers.rst:170 msgid "" "The 3D APIs are different from the 2D ones, so the instantiation API must be " "used." msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:218 +#: ../../docs/tutorials/performance/using_servers.rst:223 msgid "Creating a 2D RigidBody and moving a sprite with it" msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:220 +#: ../../docs/tutorials/performance/using_servers.rst:225 msgid "" "This creates a :ref:`RigidBody2D ` using " "the :ref:`PhysicsServer2D ` API, and moves " "a :ref:`CanvasItem ` when the body moves." msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:290 +#: ../../docs/tutorials/performance/using_servers.rst:295 msgid "" "The 3D version should be very similar, as 2D and 3D physics servers are " "identical (using :ref:`RigidBody3D ` " "and :ref:`PhysicsServer3D ` respectively)." msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:294 +#: ../../docs/tutorials/performance/using_servers.rst:299 msgid "Getting data from the servers" msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:296 +#: ../../docs/tutorials/performance/using_servers.rst:301 msgid "" "Try to **never** request any information from ``RenderingServer``, " "``PhysicsServer2D`` or ``PhysicsServer3D`` by calling functions unless you " @@ -87888,7 +88293,7 @@ msgid "" "(and it won't be obvious why)." msgstr "" -#: ../../docs/tutorials/performance/using_servers.rst:302 +#: ../../docs/tutorials/performance/using_servers.rst:307 msgid "" "Because of this, most APIs in such servers are designed so it's not even " "possible to request information back, until it's actual data that can be " @@ -89277,9 +89682,9 @@ msgstr "" #: ../../docs/tutorials/performance/optimizing_3d_performance.rst:34 msgid "" "One way we can potentially reduce the amount to be rendered is to **take " -"advantage of occlusion**. Godot 4.0 and later offers a new approach to " -"occlusion culling using occluder nodes. See :ref:`doc_occlusion_culling` for " -"instructions on setting up occlusion culling in your scene." +"advantage of occlusion**. Godot offers an approach to occlusion culling " +"using occluder nodes. See :ref:`doc_occlusion_culling` for instructions on " +"setting up occlusion culling in your scene." msgstr "" #: ../../docs/tutorials/performance/optimizing_3d_performance.rst:41 @@ -90057,37 +90462,43 @@ msgstr "" msgid "Using multiple threads" msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:9 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:8 +msgid "" +"For a list of multithreading primitives in C++, " +"see :ref:`doc_core_concurrency_types`." +msgstr "" + +#: ../../docs/tutorials/performance/using_multiple_threads.rst:13 msgid "" "Threads allow simultaneous execution of code. It allows off-loading work " "from the main thread." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:12 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:16 msgid "Godot supports threads and provides many handy functions to use them." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:14 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:18 msgid "" "If using other languages (C#, C++), it may be easier to use the threading " "classes they support." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:19 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:23 msgid "" "Before using a built-in class in a thread, read :ref:`doc_thread_safe_apis` " "first to check whether it can be safely used in a thread." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:23 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:27 msgid "Creating a Thread" msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:25 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:29 msgid "To create a thread, use the following code:" msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:134 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:138 msgid "" "Your function will, then, run in a separate thread until it returns. Even if " "the function has returned already, the thread must collect it, so " @@ -90096,32 +90507,32 @@ msgid "" "dispose of it." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:141 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:145 msgid "" "Creating threads is a slow operation, especially on Windows. To avoid " "unnecessary performance overhead, make sure to create threads before heavy " "processing is needed instead of creating threads just-in-time." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:145 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:149 msgid "" "For example, if you need multiple threads during gameplay, you can create " "threads while the level is loading and only actually start processing with " "them later on." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:149 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:153 msgid "" "Additionally, locking and unlocking of mutexes can also be an expensive " "operation. Locking should be done carefully; avoid locking too often (or for " "too long)." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:154 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:160 msgid "Mutexes" msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:156 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:162 msgid "" "Accessing objects or data from multiple threads is not always supported (if " "you do it, it will cause unexpected behaviors or crashes). Read " @@ -90129,7 +90540,7 @@ msgid "" "APIs support multiple thread access." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:161 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:167 msgid "" "When processing your own data or calling your own functions, as a rule, try " "to avoid accessing the same data directly from different threads. You may " @@ -90138,7 +90549,7 @@ msgid "" "accessing a piece of data from different threads." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:167 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:173 msgid "" "When calling :ref:`Mutex.lock()`, a thread ensures " "that all other threads will be blocked (put on suspended state) if they try " @@ -90147,15 +90558,15 @@ msgid "" "will be allowed to proceed with the lock (but only one at a time)." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:173 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:179 msgid "Here is an example of using a Mutex:" msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:298 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:304 msgid "Semaphores" msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:300 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:306 msgid "" "Sometimes you want your thread to work *\"on demand\"*. In other words, tell " "it when to work and let it suspend when it isn't doing anything. For " @@ -90164,77 +90575,80 @@ msgid "" "thread to suspend it until some data arrives." msgstr "" -#: ../../docs/tutorials/performance/using_multiple_threads.rst:306 +#: ../../docs/tutorials/performance/using_multiple_threads.rst:312 msgid "" "The main thread, instead, " "uses :ref:`Semaphore.post()` to signal that " "data is ready to be processed:" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:6 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:4 msgid "Thread-safe APIs" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:11 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:9 msgid "" "Threads are used to balance processing power across CPUs and cores. Godot " "supports multithreading, but not in the whole engine." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:14 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:12 msgid "" "Below is a list of ways multithreading can be used in different areas of " "Godot." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:17 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:15 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:29 msgid "Global scope" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:19 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:17 msgid "" -":ref:`Global Scope` singletons are all thread-safe. " -"Accessing servers from threads is supported (for RenderingServer and Physics " -"servers, ensure threaded or thread-safe operation is enabled in the project " -"settings!)." +"Most :ref:`Global Scope` singletons are thread-safe by " +"default. Accessing servers from threads is supported. However, for " +"the :ref:`rendering ` and :ref:`physics " +"` servers, thread-safe operation must be " +"enabled in the project settings first." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:21 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:23 msgid "" -"This makes them ideal for code that creates dozens of thousands of instances " -"in servers and controls them from threads. Of course, it requires a bit more " -"code, as this is used directly and not within the scene tree." +"This makes singletons ideal for code that creates dozens of thousands of " +"instances in servers and controls them from threads. Of course, it requires " +"a bit more code, as this is used directly and not within the scene tree." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:24 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:28 #: ../../docs/tutorials/scripting/scene_tree.rst:90 msgid "Scene tree" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:26 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:30 msgid "" -"Interacting with the active scene tree is **NOT** thread-safe. Make sure to " +"Interacting with the active scene tree is **not** thread-safe. Make sure to " "use mutexes when sending data between threads. If you want to call functions " -"from a thread, the *call_deferred* function may be used:" +"or set properties from a thread, you may use :ref:`call_deferred " +"` or :ref:`set_deferred " +"`:" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:43 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:50 msgid "" "However, creating scene chunks (nodes in tree arrangement) outside the " "active tree is fine. This way, parts of a scene can be built or instantiated " "in a thread, then added in the main thread:" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:60 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:69 msgid "" "Still, this is only really useful if you have **one** thread loading data. " "Attempting to load or create scene chunks from multiple threads may work, " -"but you risk resources (which are only loaded once in Godot) tweaked by the " -"multiple threads, resulting in unexpected behaviors or crashes." +"but you risk resources (which are only loaded once in Godot) being tweaked " +"by the multiple threads, resulting in unexpected behaviors or crashes." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:65 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:74 msgid "" "Only use more than one thread to generate scene data if you *really* know " "what you are doing and you are sure that a single resource is not being used " @@ -90242,60 +90656,81 @@ msgid "" "(which is fully thread-safe) directly and not touching scene or resources." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:73 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:84 msgid "" -"Instancing nodes that render anything in 2D or 3D (such as Sprite) is *not* " -"thread-safe by default. To make rendering thread-safe, set " -"the :ref:`Rendering > Driver > Thread " -"Model` " -"project setting to **Multi-Threaded**." +"Instancing nodes that render anything in 2D or 3D (such " +"as :ref:`class_Sprite2D` or :ref:`class_MeshInstance3D`) is *not* thread-" +"safe by default. To run the rendering driver on a separate thread, set " +"the :ref:`Rendering > Driver > Thread Model " +"` " +"project setting to **Separate**." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:78 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:90 msgid "" -"Note that the Multi-Threaded thread model has several known bugs, so it may " +"Note that the **Separate** thread model has several known bugs, so it may " "not be usable in all scenarios." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:81 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:95 msgid "" "You should avoid calling functions involving direct interaction with the GPU " "on other threads, such as creating new textures or modifying and retrieving " -"image data, these operations can lead to performance stalls because they " +"image data. These operations can lead to performance stalls because they " "require synchronization with " "the :ref:`RenderingServer`, as data needs to be " "transmitted to or updated on the GPU." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:86 -msgid "GDScript arrays, dictionaries" +#: ../../docs/tutorials/performance/thread_safe_apis.rst:106 +msgid "" +"Physics simulation is *not* thread-safe by default. To run the physics " +"servers on separate threads (making them thread-safe), enable the following " +"project settings:" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:88 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:109 +msgid "" +"**PhysicsServer2D:** :ref:`Physics > 2D > Run on Separate Thread " +"`." +msgstr "" + +#: ../../docs/tutorials/performance/thread_safe_apis.rst:110 +msgid "" +"**PhysicsServer3D:** :ref:`Physics > 3D > Run on Separate Thread " +"`." +msgstr "" + +#: ../../docs/tutorials/performance/thread_safe_apis.rst:113 +msgid "GDScript arrays and dictionaries" +msgstr "" + +#: ../../docs/tutorials/performance/thread_safe_apis.rst:115 msgid "" "In GDScript, reading and writing elements from multiple threads is OK, but " -"anything that changes the container size (resizing, adding or removing " -"elements) requires locking a mutex." +"anything that changes the container size (resizing, adding, or removing " +"elements) requires locking a :ref:`mutex " +"`." msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:91 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:120 #: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:284 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:341 #: ../../docs/tutorials/scripting/resources.rst:4 -#: ../../docs/engine_details/architecture/object_class.rst:275 +#: ../../docs/engine_details/architecture/object_class.rst:351 #: ../../docs/engine_details/file_formats/tscn.rst:259 #: ../../docs/community/tutorials.rst:41 msgid "Resources" msgstr "" -#: ../../docs/tutorials/performance/thread_safe_apis.rst:93 +#: ../../docs/tutorials/performance/thread_safe_apis.rst:122 msgid "" -"Modifying a unique resource from multiple threads is not supported. However " -"handling references on multiple threads is supported, hence loading " +"Modifying a unique resource from multiple threads is not supported. However, " +"handling references on multiple threads *is* supported. Hence loading " "resources on a thread is as well - scenes, textures, meshes, etc - can be " "loaded and manipulated on a thread and then added to the active scene on the " -"main thread. The limitation here is as described above, one must be careful " -"not to load the same resource from multiple threads at once, therefore it is " +"main thread. The limitation here is as described above: one must be careful " +"not to load the same resource from multiple threads at once. Therefore, it's " "easiest to use **one** thread for loading and modifying resources, and then " "the main thread for adding them." msgstr "" @@ -90863,15 +91298,6 @@ msgstr "" #: ../../docs/tutorials/physics/using_jolt_physics.rst:14 msgid "" -"It is important to note that the built-in Jolt Physics module is considered " -"**not finished**, **experimental**, and **lacks feature parity** with both " -"Godot Physics and the Godot Jolt extension. Behavior may change as it is " -"developed further. Please keep that in mind when choosing what to use for " -"your project." -msgstr "" - -#: ../../docs/tutorials/physics/using_jolt_physics.rst:19 -msgid "" "The existing extension is now considered in maintenance mode. That means bug " "fixes will be merged, and it will be kept compatible with new versions of " "Godot until the built-in module has feature parity with the extension. The " @@ -90879,7 +91305,7 @@ msgid "" "jolt>`_ and in Godot's asset library." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:25 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:20 msgid "" "To change the 3D physics engine to be Jolt Physics, set :ref:`Project " "Settings > Physics > 3D > Physics " @@ -90888,21 +91314,21 @@ msgid "" "the editor opens again, 3D scenes should now be using Jolt for physics." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:31 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:26 msgid "Notable differences to Godot Physics" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:33 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:28 msgid "" "There are many differences between the existing Godot Physics engine and " "Jolt." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:36 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:31 msgid "Joint properties" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:38 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:33 msgid "" "The current interfaces for the 3D joint nodes don't quite line up with the " "interface of Jolt's own joints. As such, there are a number of joint " @@ -90910,45 +91336,45 @@ msgid "" "joint's soft limits." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:42 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:37 msgid "The unsupported properties are:" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:44 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:39 msgid "PinJoint3D: ``bias``, ``damping``, ``impulse_clamp``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:45 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:40 msgid "HingeJoint3D: ``bias``, ``softness``, ``relaxation``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:46 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:41 msgid "" "SliderJoint3D: ``angular_\\*``, ``\\*_limit/softness``, ``\\*_limit/" "restitution``, ``\\*_limit/damping``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:47 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:42 msgid "ConeTwistJoint3D: ``bias``, ``relaxation``, ``softness``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:48 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:43 msgid "" "Generic6DOFJoint3D: ``*_limit_*/softness``, ``*_limit_*/restitution``, " "``*_limit_*/damping``, ``*_limit_*/erp``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:50 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:45 msgid "" "Currently a warning is emitted if you set these properties to anything but " "their default values." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:54 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:49 msgid "Single-body joints" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:56 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:51 msgid "" "You can, in Godot, omit one of the joint bodies for a two-body joint and " "effectively have \"the world\" be the other body. However, the node path " @@ -90960,7 +91386,7 @@ msgid "" "your limits allow both linear and angular degrees of freedom." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:65 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:60 msgid "" "Jolt will behave as if you assigned the body to ``node_b`` instead, with " "``node_a`` representing \"the world\". There is a project setting " @@ -90970,11 +91396,11 @@ msgid "" "for an existing project." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:70 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:65 msgid "Collision margins" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:72 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:67 msgid "" "Jolt (and other similar physics engines) uses something that Jolt refers to " "as \"convex radius\" to help improve the performance and behavior of the " @@ -90985,7 +91411,7 @@ msgid "" "anything." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:79 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:74 msgid "" "What these collision margins sometimes do in other engines (as described in " "Godot's documentation) is effectively add a \"shell\" around the shape, " @@ -90995,7 +91421,7 @@ msgid "" "off, but without increasing the size of the shape." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:86 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:81 msgid "" "To prevent having to tweak this margin property manually, since its default " "value can be problematic for smaller shapes, the Jolt module exposes a " @@ -91006,7 +91432,7 @@ msgid "" "The margin property of the shape is then instead used as an upper bound." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:93 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:88 msgid "" "These margins should, for most use-cases, be more or less transparent, but " "can sometimes result in odd collision normals when performing shape queries. " @@ -91015,11 +91441,11 @@ msgid "" "odd collision results, so is generally not recommended." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:100 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:95 msgid "Baumgarte stabilization" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:102 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:97 msgid "" "Baumgarte stabilization is a method to resolve penetrating bodies and push " "them to a state where they are just touching. In Godot Physics this works " @@ -91029,7 +91455,7 @@ msgid "" "it cannot overshoot but it may take longer to resolve the penetration." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:109 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:104 msgid "" "The strength of this stabilization can be tweaked using the project " "setting :ref:`Physics > Jolt Physics 3D > Simulation > Baumgarte " @@ -91040,18 +91466,18 @@ msgid "" "unstable." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:116 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:111 msgid "Ghost collisions" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:118 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:113 msgid "" "Jolt employs two techniques to mitigate ghost collisions, meaning collisions " "with internal edges of shapes/bodies that result in collision normals that " "oppose the direction of movement." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:122 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:117 msgid "" "The first technique, called \"active edge detection\", marks edges of " "triangles in :ref:`class_ConcavePolygonShape3D` " @@ -91061,7 +91487,7 @@ msgid "" "normal instead, to lessen the effect of ghost collisions." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:128 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:123 msgid "" "The angle threshold for this active edge detection is configurable through " "the project setting :ref:`Physics >Jolt Physics 3D > Collisions > Active " @@ -91069,7 +91495,7 @@ msgid "" "collisions/active_edge_threshold>`." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:131 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:126 msgid "" "The second technique, called \"enhanced internal edge removal\", instead " "adds runtime checks to detect whether an edge is active or inactive, based " @@ -91079,7 +91505,7 @@ msgid "" "the same body." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:137 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:132 msgid "" "Enhanced internal edge removal can be toggled on and off for the various " "contexts to which it's applied, using the :ref:`Physics >Jolt Physics 3D > " @@ -91092,18 +91518,18 @@ msgid "" "jolt_physics_3d/motion_queries/use_enhanced_internal_edge_removal>`." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:142 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:137 msgid "" "Note that neither the active edge detection nor enhanced internal edge " "removal apply when dealing with ghost collisions between two different " "bodies." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:146 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:141 msgid "Memory usage" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:148 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:143 msgid "" "Jolt uses a stack allocator for temporary allocations within its simulation " "step. This stack allocator requires allocating a set amount of memory up " @@ -91112,11 +91538,11 @@ msgid "" "jolt_physics_3d/limits/temporary_memory_buffer_size>` project setting." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:154 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:149 msgid "Ray-cast face index" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:156 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:151 msgid "" "The ``face_index`` property returned in the results " "of :ref:`intersect_ray()` " @@ -91126,17 +91552,17 @@ msgid "" "enable_ray_cast_face_index>` will enable them." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:160 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:155 msgid "" "Note that enabling this setting will increase the memory requirement " "of :ref:`class_ConcavePolygonShape3D` with about 25%." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:164 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:159 msgid "Kinematic RigidBody3D contacts" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:166 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:161 msgid "" "When using Jolt, a :ref:`class_RigidBody3D` frozen " "with :ref:`FREEZE_MODE_KINEMATIC` " @@ -91149,7 +91575,7 @@ msgid "" "amount of CPU performance and memory without realizing it." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:174 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:169 msgid "" "For this reason this behavior is opt-in through the project " "setting :ref:`Physics > Jolt Physics 3D > Simulation > Generate All " @@ -91157,11 +91583,11 @@ msgid "" "simulation/generate_all_kinematic_contacts>`." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:178 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:173 msgid "Contact impulses" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:180 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:175 msgid "" "Due to limitations internal to Jolt, the contact impulses provided " "by :ref:`PhysicsDirectBodyState3D.get_contact_impulse()` " @@ -91171,18 +91597,18 @@ msgid "" "colliding with any other bodies." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:186 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:181 msgid "Area3D and SoftBody3D" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:188 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:183 msgid "" "Jolt does not currently support any interactions " -"between :ref:`class_SoftBody3D` and :ref:`class_Area3D`, such as overlap " -"events, or the wind properties found on :ref:`class_Area3D`." +"between :ref:`class_SoftBody3D` and :ref:`class_Area3D`, such as the wind " +"and gravity properties found on :ref:`class_Area3D`." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:195 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:190 msgid "" ":ref:`class_WorldBoundaryShape3D`, which is meant to represent an infinite " "plane, is implemented a bit differently in Jolt compared to Godot Physics. " @@ -91191,201 +91617,201 @@ msgid "" "avoid precision issues." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:200 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:195 msgid "" "You can configure this size using the :ref:`Physics > Jolt Physics 3D > " "Limits > World Boundary Shape Size` project setting." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:204 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:199 msgid "Notable differences to the Godot Jolt extension" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:206 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:201 msgid "" "While the built-in Jolt module is largely a straight port of the Godot Jolt " "extension, there are a few things that are different." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:210 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:205 #: ../../docs/tutorials/scripting/logging.rst:20 msgid "Project settings" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:212 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:207 msgid "" "All project settings have been moved from the ``physics/jolt_3d`` category " "to ``physics/jolt_physics_3d``." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:215 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:210 msgid "" "On top of that, there's been some renaming and refactoring of the individual " "project settings as well. These include:" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:218 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:213 msgid "``sleep/enabled`` is now ``simulation/allow_sleep.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:219 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:214 msgid "" "``sleep/velocity_threshold`` is now ``simulation/sleep_velocity_threshold.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:220 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:215 msgid "``sleep/time_threshold`` is now ``simulation/sleep_time_threshold.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:221 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:216 msgid "" "``collisions/use_shape_margins`` is now ``collisions/" "collision_margin_fraction``, where a value of 0 is equivalent to disabling " "it." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:223 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:218 msgid "" "``collisions/use_enhanced_internal_edge_removal`` is now ``simulation/" "use_enhanced_internal_edge_removal.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:224 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:219 msgid "" "``collisions/areas_detect_static_bodies`` is now ``simulation/" "areas_detect_static_bodies.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:225 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:220 msgid "" "``collisions/report_all_kinematic_contacts`` is now ``simulation/" "generate_all_kinematic_contacts.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:226 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:221 msgid "" "``collisions/soft_body_point_margin`` is now ``simulation/" "soft_body_point_radius.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:227 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:222 msgid "" "``collisions/body_pair_cache_enabled is now simulation/" "body_pair_contact_cache_enabled.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:228 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:223 msgid "" "``collisions/body_pair_cache_distance_threshold`` is ``now simulation/" "body_pair_contact_cache_distance_threshold.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:229 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:224 msgid "" "``collisions/body_pair_cache_angle_threshold is now simulation/" "body_pair_contact_cache_angle_threshold.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:230 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:225 msgid "" "``continuous_cd/movement_threshold`` is now ``simulation/" "continuous_cd_movement_threshold``, but expressed as a fraction instead of a " "percentage." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:232 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:227 msgid "" "``continuous_cd/max_penetration`` is now ``simulation/" "continuous_cd_max_penetration``, but expressed as a fraction instead of a " "percentage." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:234 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:229 msgid "" "``kinematics/use_enhanced_internal_edge_removal`` is now ``motion_queries/" "use_enhanced_internal_edge_removal.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:235 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:230 msgid "" "``kinematics/recovery_iterations`` is now ``motion_queries/" "recovery_iterations``, but expressed as a fraction instead of a percentage." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:237 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:232 msgid "" "``kinematics/recovery_amount`` is now ``motion_queries/recovery_amount.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:238 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:233 msgid "``queries/use_legacy_ray_casting`` has been removed." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:239 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:234 msgid "``solver/position_iterations`` is now ``simulation/position_steps.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:240 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:235 msgid "``solver/velocity_iterations`` is now ``simulation/velocity_steps.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:241 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:236 msgid "" "``solver/position_correction`` is now ``simulation/" "baumgarte_stabilization_factor``, but expressed as a fraction instead of a " "percentage." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:243 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:238 msgid "" "``solver/active_edge_threshold`` is now ``collisions/active_edge_threshold.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:244 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:239 msgid "" "``solver/bounce_velocity_threshold`` is now ``simulation/" "bounce_velocity_threshold.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:245 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:240 msgid "" "``solver/contact_speculative_distance`` is now ``simulation/" "speculative_contact_distance.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:246 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:241 msgid "" "``solver/contact_allowed_penetration`` is now ``simulation/" "penetration_slop.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:247 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:242 msgid "``limits/max_angular_velocity`` is now stored as radians instead." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:248 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:243 msgid "" "``limits/max_temporary_memory`` is now ``limits/" "temporary_memory_buffer_size.``" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:251 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:246 msgid "Joint nodes" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:253 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:248 msgid "" "The joint nodes that are exposed in the Godot Jolt extension " "(JoltPinJoint3D, JoltHingeJoint3D, JoltSliderJoint3D, JoltConeTwistJoint3D, " "and JoltGeneric6DOFJoint) have not been included in the Jolt module." msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:258 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:253 msgid "Thread safety" msgstr "" -#: ../../docs/tutorials/physics/using_jolt_physics.rst:260 +#: ../../docs/tutorials/physics/using_jolt_physics.rst:255 msgid "" "Unlike the Godot Jolt extension, the Jolt module does have thread-safety, " "including support for the :ref:`Physics > 3D > Run On Separate " @@ -91694,6 +92120,7 @@ msgstr "" #: ../../docs/tutorials/physics/using_area_2d.rst:133 #: ../../docs/tutorials/physics/using_character_body_2d.rst:215 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_features.rst:106 +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:214 #: ../../docs/engine_details/development/compiling/compiling_with_dotnet.rst:159 msgid "Examples" msgstr "" @@ -92341,150 +92768,407 @@ msgstr "" #: ../../docs/tutorials/physics/ragdoll_system.rst:9 msgid "" -"Since version 3.1, Godot supports ragdoll physics. Ragdolls rely on physics " -"simulation to create realistic procedural animation. They are used for death " -"animations in many games." +"Godot supports ragdoll physics. Ragdolls rely on physics simulation to " +"create realistic procedural animation. They are used for death animations in " +"many games." msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:11 +#: ../../docs/tutorials/physics/ragdoll_system.rst:12 msgid "" -"In this tutorial, we will be using the Platformer3D demo to set up a ragdoll." +"In this tutorial, we will be using the Platformer 3D demo to set up a " +"ragdoll." msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:13 +#: ../../docs/tutorials/physics/ragdoll_system.rst:20 msgid "" -"You can download the Platformer3D demo on `GitHub `_ or using the " -"`Asset Library `_." +"You can also check out an example of a complete ragdoll setup in the " +"`Ragdoll Physics demo `_." msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:16 +#: ../../docs/tutorials/physics/ragdoll_system.rst:24 msgid "Setting up the ragdoll" msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:19 +#: ../../docs/tutorials/physics/ragdoll_system.rst:27 msgid "Creating physical bones" msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:21 +#: ../../docs/tutorials/physics/ragdoll_system.rst:29 msgid "" -"Like many other features in the engine, there is a node to set up a ragdoll: " -"the :ref:`PhysicalBone3D ` node. To simplify the " -"setup, you can generate ``PhysicalBone`` nodes with the \"Create physical " -"skeleton\" feature in the skeleton node." +"Like many other features in the engine, there are two nodes which are used " +"to set up a ragdoll:" msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:23 +#: ../../docs/tutorials/physics/ragdoll_system.rst:32 msgid "" -"Open the platformer demo in Godot, and then the Robi scene. Select the " -"``Skeleton`` node. A skeleton button appears on the top bar menu:" +"A :ref:`PhysicalBoneSimulator3D ` node. This " +"node is the parent of all physical bones and is responsible for controlling " +"the simulation." msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:27 +#: ../../docs/tutorials/physics/ragdoll_system.rst:35 msgid "" -"Click it and select the ``Create physical skeleton`` option. Godot will " -"generate ``PhysicalBone`` nodes and collision shapes for each bone in the " -"skeleton and pin joints to connect them together:" -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:31 -msgid "" -"Some of the generated bones aren't necessary: the ``MASTER`` bone for " -"example. So we're going to clean up the skeleton by removing them." -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:34 -msgid "Cleaning up the skeleton" -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:36 -msgid "" -"Each ``PhysicalBone`` the engine needs to simulate has a performance cost, " -"so you want to remove every bone that is too small to make a difference in " -"the simulation, as well as all utility bones." +"One or more :ref:`PhysicalBone3D ` children. Each node " +"represents a single bone in the ragdoll." msgstr "" #: ../../docs/tutorials/physics/ragdoll_system.rst:38 msgid "" -"For example, if we take a humanoid, you do not want to have physical bones " +"Open the platformer demo in Godot, and then the ``player/player.tscn`` " +"scene. Select the ``Skeleton3D`` node. A skeleton button appears at the top " +"of the 3D editor viewport:" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:42 +#: ../../docs/tutorials/physics/ragdoll_system.rst:46 +msgid "Creating a physical skeleton in the editor" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:48 +msgid "" +"Click it and select the :menu:`Create Physical Skeleton` option. Godot will " +"generate PhysicalBone3D nodes and collision shapes for each bone in the " +"skeleton and pin joints to connect them together:" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:52 +#: ../../docs/tutorials/physics/ragdoll_system.rst:56 +msgid "Scene tree of the player scene after creating a physical skeleton" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:58 +msgid "" +"Some of the generated bones aren't necessary, such as the ``MASTER`` bone in " +"this scene. We're going to clean up the skeleton by removing them." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:62 +msgid "Clean up and optimize the skeleton" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:64 +msgid "" +"For each PhysicalBone3D the engine needs to simulate, there is a performance " +"cost. You'll want to remove every bone that is too small to make a " +"difference in the simulation, as well as all utility bones." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:68 +msgid "" +"For example, if we take a humanoid, you don't need to have physical bones " "for each finger. You can use a single bone for the entire hand instead, or " "one for the palm, one for the thumb, and a last one for the other four " "fingers." msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:40 +#: ../../docs/tutorials/physics/ragdoll_system.rst:72 msgid "" -"Remove these physical bones: ``MASTER``, ``waist``, ``neck``, " +"Remove these PhysicalBone3D nodes: ``MASTER``, ``waist``, ``neck``, " "``headtracker``. This gives us an optimized skeleton and makes it easier to " "control the ragdoll." msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:43 -msgid "Collision shape adjustment" -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:45 -msgid "" -"The next task is adjusting the collision shape and the size of physical " -"bones to match the part of the body that each bone should simulate." -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:50 -msgid "Joints adjustment" -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:52 -msgid "" -"Once you adjusted the collision shapes, your ragdoll is almost ready. You " -"just want to adjust the pin joints to get a better simulation. " -"``PhysicalBone`` nodes have an unconstrained pin joint assigned to them by " -"default. To change the pin joint, select the ``PhysicalBone`` and change the " -"constraint type in the ``Joint`` section. There, you can change the " -"constraint's orientation and its limits." -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:56 -msgid "This is the final result:" -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:61 -msgid "Simulating the ragdoll" -msgstr "" - -#: ../../docs/tutorials/physics/ragdoll_system.rst:63 -msgid "" -"The ragdoll is now ready to use. To start the simulation and play the " -"ragdoll animation, you need to call the ``physical_bones_start_simulation`` " -"method. Attach a script to the skeleton node and call the method in the " -"``_ready`` method:" +#: ../../docs/tutorials/physics/ragdoll_system.rst:76 +msgid "Adjust joints and constraints" msgstr "" #: ../../docs/tutorials/physics/ragdoll_system.rst:78 msgid "" -"To stop the simulation, call the ``physical_bones_stop_simulation()`` method." +"Once you adjusted the collision shapes, your ragdoll is almost ready. Now, " +"you need to adjust the pin joints to get a better simulation. PhysicalBone3D " +"nodes have an unconstrained pin joint assigned to them by default. To change " +"the pin joint, select a PhysicalBone3D node and change the constraint type " +"in the :menu:`Joint` section of the inspector. There, you can change the " +"constraint's orientation and its limits." msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:82 +#: ../../docs/tutorials/physics/ragdoll_system.rst:84 msgid "" -"You can also limit the simulation to only a few bones. To do so, pass the " -"bone names as a parameter. Here's an example of partial ragdoll simulation:" +"Joints have a gizmo visible in the 3D editor as well, so you can see their " +"constraints in action." msgstr "" #: ../../docs/tutorials/physics/ragdoll_system.rst:87 +#: ../../docs/tutorials/physics/ragdoll_system.rst:91 +msgid "Adjusting joints in the inspector after selecting a PhysicalBone3D node" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:95 +msgid "" +"To get a better view when editing joints and collision shapes, you can do " +"the following:" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:97 +msgid "" +"Hide PhysicalBone3D nodes you aren't currently working on, so you can focus " +"on the ones you're adjusting." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:99 +msgid "" +"Hide the MeshInstance3D of the character by clicking the eye icon next to it " +"in the scene tree dock." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:101 +msgid "" +"Hide the Skeleton3D gizmos, so that the orange triangles that represent the " +"skeleton don't clutter the viewport while leaving the rest visible. To do " +"so, click :menu:`View > Gizmos > Skeleton3D` at the top of the 3D editor " +"viewport until the eye icon appears closed." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:105 +msgid "" +"Disable the preview environment by clicking the globe icon at the top of the " +"3D editor viewport." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:107 +msgid "" +"Set the **Default Clear Color** project setting to pure black in the Project " +"Settings. This is only effective if the preview environment is disabled." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:109 +msgid "" +"Change the debug draw mode using the :menu:`Perspective` button in the top-" +"left corner of the 3D editor viewport. The :menu:`Display Wireframe` " +"and :menu:`Display Overdraw` options are particularly useful when adjusting " +"collision shapes, as they allow you to see through the original mesh." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:113 +msgid "" +"Use the orthographic camera by clicking " +"the :button:`X`/:button:`Y`/:button:`Z` buttons in the top-right corner of " +"the 3D editor viewport." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:116 +msgid "Here is the list of joints available:" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:118 +msgid "**None:** Does not perform any constraint." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:119 +msgid "**ConeJoint:** Ball-and-socket. Useful for shoulders, hips, neck." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:120 +msgid "" +"**HingeJoint:** Provides an angular constraint; think of it like a door " +"hinge. Useful for elbows and knees." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:122 +msgid "" +"**PinJoint:** Keeps two bodies connected *(default)*. Leads to \"crumpling\" " +"of the bones, so it's recommended to use other joint types for most " +"characters instead." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:125 +msgid "**SliderJoint:** Slides one bone along another on a specific axis." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:126 +msgid "" +"**6DOFJoint:** Most powerful joint, offering both linear and angular " +"constraints, but also the most complex to configure." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:129 +msgid "" +"If in doubt, start with HingeJoint and ConeJoint, as they cover most use " +"cases:" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:131 +msgid "" +"For HingeJoint, make sure to enable **Angular Limit** in the :menu:`Joint " +"Constraints` section of the inspector. After enabling it, you can see the " +"angle that it's being constrained to in the viewport. You can rotate the " +"PhysicalBone3D to change the axis where the joint is constrained, then " +"adjust the angles." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:136 +msgid "" +"For ConeJoint, it's usually best to limit **Swing Span** between 20 and 90 " +"degrees, and the **Twist Span** between 20 and 45 degrees." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:140 +msgid "Adjust collision shapes" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:142 +msgid "" +"The next task is adjusting the collision shape and the size of the physical " +"bones to match the part of the body that each bone should simulate." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:145 +msgid "" +"It's recommended to adjust collision shapes *after* adjusting joints and " +"constraints, as rotating a joint will also rotate the collision shape. To " +"avoid having to adjust collision shapes twice, it's better to adjust joints " +"first." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:149 +msgid "" +"Note that it's possible to have multiple collision shapes as a child of a " +"PhysicalBone3D node. This can be useful to represent particularly complex " +"shapes of limbs that are otherwise rigid." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:155 +msgid "" +"To pause animation playback while adjusting the ragdoll, select the " +"``AnimationTree`` node and disable the **Active** property in the Inspector. " +"Remember to enable it again when you're done, as it controls animation " +"playback during gameplay." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:160 +#: ../../docs/tutorials/physics/ragdoll_system.rst:164 +msgid "Adjusting collision shapes in the 3D editor" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:166 +msgid "This is the final result:" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:168 +#: ../../docs/tutorials/physics/ragdoll_system.rst:172 +msgid "" +"Result after adjusting joints and collision shapes (player mesh is hidden " +"for visibility)" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:175 +msgid "Simulate the ragdoll" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:177 +msgid "" +"The ragdoll is now ready to use. To start the simulation and play the " +"ragdoll animation, you need to call " +"the :ref:`PhysicalBoneSimulator3D.physical_bones_start_simulation() " +"` " +"method. Attach a script to the :ref:`PhysicalBoneSimulator3D " +"` node that is the parent of all the " +"PhysicalBone3D nodes in our scene, then call it in the script's ``_ready`` " +"method:" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:197 +msgid "" +"To stop the simulation, call " +"the :ref:`PhysicalBoneSimulator3D.physical_bones_stop_simulation() " +"` " +"method." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:209 +msgid "" +"You can also limit the simulation to only a few bones. This can be useful to " +"create effects such as ragdoll limbs or attachments that can interact with " +"the world. To do so, pass the bone names (*not* the PhysicalBone3D node " +"names) as a parameter. To see the bone name, look at the **Bone Name** " +"property in the inspector after selecting a PhysicalBone3D node." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:217 +msgid "" +"When using an automatically generated physical skeleton as shown in this " +"tutorial, the bone name is also contained in the node name. For example, in " +"``Physical Bone l-arm``, ``l-arm`` is the bone name." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:234 +msgid "" +"Note that nonexistent bone names will not print any error or warning. If " +"nothing happens when starting the simulation (or if the whole body is " +"ragdolled instead of only specific bones), double-check the list of provided " +"bones." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:238 +msgid "Here's an example of partial ragdoll simulation:" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:250 +msgid "" +"To control how strongly the partial ragdoll simulation affects the overall " +"animation, you can adjust the **Influence** property in " +"the :ref:`PhysicalBoneSimulator3D ` node that " +"is the parent of all PhysicalBone3D nodes. By default, it's set to ``1.0``, " +"which means the ragdoll simulation fully overrides the rest of the animation." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:257 msgid "Collision layer and mask" msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:89 +#: ../../docs/tutorials/physics/ragdoll_system.rst:259 msgid "" "Make sure to set up your collision layers and masks properly so the " -"``CharacterBody3D``'s capsule doesn't get in the way of the physics " -"simulation:" +"CharacterBody3D's capsule doesn't get in the way of the physics simulation. " +"Remember to adjust the collision layer and mask in the coin scene as well, " +"so that the player can still collect coins:" msgstr "" -#: ../../docs/tutorials/physics/ragdoll_system.rst:93 +#: ../../docs/tutorials/physics/ragdoll_system.rst:264 +#: ../../docs/tutorials/physics/ragdoll_system.rst:268 +msgid "" +"Layers and masks must be adjusted to these values in the inspector for each " +"node" +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:270 +msgid "" +"You can find the GridMap in the 3D platformer demo in ``stage/" +"grid_map.scn``. The coin's Area3D node (on which the layers and masks must " +"be adjusted) can be found at ``coin/coin.tscn``." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:276 +msgid "" +"To select all PhysicalBone3D nodes quickly, enter ``t:PhysicalBone3D`` in " +"the search bar at the top of the scene tree dock. This filters the scene " +"tree to only show PhysicalBone3D nodes, which allows you to select them all " +"at once using :kbd:`Shift + Left mouse button` on the first and last entries." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:281 +msgid "" +"If this is not done, collision will behave incorrectly as the player will " +"collide with its own (inactive) ragdoll. This can cause the player to wildly " +"bounce around or get stuck." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:285 +msgid "" +"Like RigidBody3D, PhysicalBone3D supports collision exceptions through code " +"using the :ref:`physical_bones_add_collision_exception() " +"` " +"and :ref:`physical_bones_remove_collision_exception() " +"` " +"methods. This can be used to prevent collisions with a specific object " +"without relying on layers and masks." +msgstr "" + +#: ../../docs/tutorials/physics/ragdoll_system.rst:293 msgid "" "For more information, " -"read :ref:`doc_physics_introduction_collision_layers_and_masks`." +"see :ref:`doc_physics_introduction_collision_layers_and_masks`." msgstr "" #: ../../docs/tutorials/physics/kinematic_character_2d.rst:4 @@ -92650,160 +93334,284 @@ msgid "" "kinematic_character." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:6 +#: ../../docs/tutorials/physics/soft_body.rst:4 msgid "Using SoftBody3D" msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:8 +#: ../../docs/tutorials/physics/soft_body.rst:6 msgid "" "Soft bodies (or *soft-body dynamics*) simulate movement, changing shape and " -"other physical properties of deformable objects. This can for example be " +"other physical properties of deformable objects. For example, this can be " "used to simulate cloth or to create more realistic characters." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:12 -msgid "Basic set-up" +#: ../../docs/tutorials/physics/soft_body.rst:11 +msgid "Physics engine considerations" msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:14 +#: ../../docs/tutorials/physics/soft_body.rst:13 msgid "" -"A :ref:`SoftBody3D ` node is used for soft body " -"simulations." -msgstr "" - -#: ../../docs/tutorials/physics/soft_body.rst:16 -msgid "We will create a bouncy cube to demonstrate the setup of a soft body." +"Support for soft bodies is generally more robust in Jolt Physics compared to " +"GodotPhysics3D. You can switch physics engines by changing **Physics > 3D > " +"Physics Engine** in the Project Settings. Projects created in Godot 4.6 and " +"later use Jolt Physics by default, but existing projects will have to be " +"switched over manually." msgstr "" #: ../../docs/tutorials/physics/soft_body.rst:18 msgid "" -"Create a new scene with a ``Node3D`` node as root. Then, create a " -"``SoftBody3D`` node. Add a ``CubeMesh`` in the ``mesh`` property of the node " -"in the inspector and increase the subdivision of the mesh for simulation." +"Additionally, :ref:`physics interpolation ` " +"currently does not affect soft bodies. If you want soft body simulation to " +"look smoother at higher framerates, you'll have to increase the **Physics > " +"Common > Physics Ticks per Second** project setting, which comes at a " +"performance cost." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:22 -msgid "" -"Set the parameters to obtain the type of soft body you aim for. Try to keep " -"the ``Simulation Precision`` above 5, otherwise, the soft body may collapse." +#: ../../docs/tutorials/physics/soft_body.rst:24 +msgid "Basic setup" msgstr "" #: ../../docs/tutorials/physics/soft_body.rst:26 msgid "" -"Handle some parameters with care, as some value can lead to strange results. " -"For example, if the shape is not completely closed and you set pressure to " -"more than 0, the softbody will fly around like a plastic bag under strong " -"wind." +"A :ref:`SoftBody3D ` node is used for soft body " +"simulations. Unlike other physics body nodes like :ref:`RigidBody3D " +"` or :ref:`StaticBody3D `, it does " +"**not** have a :ref:`CollisionShape3D ` or " +"a :ref:`MeshInstance3D ` child node. Instead, the " +"collision shape is derived from the mesh assigned to the node. This mesh is " +"also directly used for rendering, which means you don't need to create any " +"child nodes for a functional, visible setup." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:28 -msgid "Play the scene to view the simulation." +#: ../../docs/tutorials/physics/soft_body.rst:34 +msgid "We will create a bouncy cube to demonstrate the setup of a soft body." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:30 +#: ../../docs/tutorials/physics/soft_body.rst:36 msgid "" -"To improve the simulation's result, increase the ``Simulation Precision``, " -"this will give significant improvement at the cost of performance." +"Create a new scene with a Node3D node as root. Then, create a SoftBody3D " +"node. Add a BoxMesh in the **Mesh** property of the node in the inspector " +"and increase the subdivision of the mesh for simulation." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:33 +#: ../../docs/tutorials/physics/soft_body.rst:40 +msgid "" +"The subdivision level determines the precision level of the deformation, " +"with higher values allowing for smaller and more detailed deformations, at " +"the cost of performance. In this example, we'll set it to 3 on each axis:" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:44 +#: ../../docs/tutorials/physics/soft_body.rst:48 +msgid "Adjusting BoxMesh properties in the inspector" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:50 +msgid "" +"Now, set the parameters to obtain the type of soft body you aim for. Try to " +"keep the **Simulation Precision** above 5; otherwise, the soft body may " +"collapse." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:54 +#: ../../docs/tutorials/physics/soft_body.rst:58 +msgid "Adjusting SoftBody3D simulation properties in the inspector" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:62 +msgid "" +"Handle some parameters with care, as some values can lead to strange " +"results. For example, if the shape is not completely closed and you set " +"pressure to a value greater than ``0.0``, the soft body will fly around like " +"a plastic bag under strong wind." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:67 +msgid "" +"Run the scene to view the simulation. Here's an example of what it should " +"look like:" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:79 +msgid "" +"To improve the simulation's result, increase the **Simulation Precision**. " +"This can give a significant improvement at the cost of performance." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:82 +msgid "" +"Alternatively, you can increase the **Physics > Common > Physics Ticks per " +"Second** project setting, which will also affect soft body simulation " +"quality." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:86 msgid "Cloak simulation" msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:35 -msgid "Let's make a cloak in the Platformer3D demo." +#: ../../docs/tutorials/physics/soft_body.rst:88 +msgid "Let's make a cloak in the Platformer 3D demo." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:37 +#: ../../docs/tutorials/physics/soft_body.rst:92 msgid "" -"You can download the Platformer3D demo on `GitHub `_ or `the Asset " "Library `_." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:39 +#: ../../docs/tutorials/physics/soft_body.rst:96 msgid "" -"Open the ``Player`` scene, add a ``SoftBody3D`` node and assign a " -"``PlaneMesh`` to it." +"Open the ``player/player.tscn`` scene, add a ``SoftBody3D`` node below the " +"root node, then assign a PlaneMesh resource to it in its **Mesh** property." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:41 +#: ../../docs/tutorials/physics/soft_body.rst:99 msgid "" -"Open the ``PlaneMesh`` properties and set the size(x: 0.5 y: 1) then set " -"``Subdivide Width`` and ``Subdivide Depth`` to 5. Adjust the " -"``SoftBody3D``'s position. You should end up with something like this:" +"Open the PlaneMesh's properties and set the size to ``(0.5, 1.0)``, then set " +"**Subdivide Width** and **Subdivide Depth** to ``5``. Adjust the SoftBody3D " +"node's position and rotation so that the plane appears to be close to the " +"character's back. You should end up with something like this:" msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:45 -msgid "Subdivision generates a more tessellated mesh for better simulations." +#: ../../docs/tutorials/physics/soft_body.rst:104 +#: ../../docs/tutorials/physics/soft_body.rst:108 +msgid "Subdividing the PlaneMesh and placing it on the character's back" msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:47 +#: ../../docs/tutorials/physics/soft_body.rst:112 +msgid "" +"Subdivision generates a more tessellated mesh for better simulations. " +"However, higher subdivision levels will impact performance. Try to find a " +"balance between performance and quality. This depends on the number of soft " +"body simulations that you expect to be active at a given time, as well as " +"the distance between the camera and the soft body." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:118 msgid "" "Add a :ref:`BoneAttachment3D ` node under the " "skeleton node and select the Neck bone to attach the cloak to the character " "skeleton." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:49 +#: ../../docs/tutorials/physics/soft_body.rst:123 msgid "" -"``BoneAttachment3D`` node is to attach objects to a bone of an armature. The " -"attached object will follow the bone's movement, weapon of a character can " -"be attached this way." +"The BoneAttachment3D node is used to attach objects to a bone of an " +"armature. The attached object will follow the bone's movement. For example, " +"a character's held weapon can be attached this way." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:53 +#: ../../docs/tutorials/physics/soft_body.rst:127 msgid "" -"To create pinned joints, select the upper vertices in the ``SoftBody3D`` " -"node:" +"Do **not** move the SoftBody3D node under the BoneAttachment3D node as of " +"now. Instead, we'll configure its *pinned points* to follow the " +"BoneAttachment3D node." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:57 -msgid "" -"The pinned joints can be found in ``SoftBody3D``'s ``Attachments`` property, " -"choose the ``BoneAttachment`` as the ``SpatialAttachment`` for each pinned " -"joints, the pinned joints are now attached to the neck." +#: ../../docs/tutorials/physics/soft_body.rst:130 +#: ../../docs/tutorials/physics/soft_body.rst:134 +msgid "Configuring the BoneAttachment3D node in the inspector" msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:61 +#: ../../docs/tutorials/physics/soft_body.rst:136 msgid "" -"Last step is to avoid clipping by adding the Kinematic Body `Player` to " -"``Parent Collision Ignore`` of the ``SoftBody3D``." +"To create pinned points, select the upper vertices in the SoftBody3D node. A " +"pinned point appears blue in the 3D editor viewport:" msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:65 +#: ../../docs/tutorials/physics/soft_body.rst:139 +#: ../../docs/tutorials/physics/soft_body.rst:143 +msgid "Pinning the SoftBody3D's points in the inspector" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:145 +msgid "" +"The pinned joints can be found in SoftBody3D's **Attachments** section, " +"which is under the **Collision** section that must be expanded first. Choose " +"the BoneAttachment3D node as the **Spatial Attachment Path** for each pinned " +"joint. The pinned joints are now attached to the neck." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:152 +msgid "" +"To assign the properties faster, you can drag-and-drop the BoneAttachment3D " +"node from the scene tree dock to the **Spatial Attachment Path** property " +"field." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:155 +msgid "" +"Note that you may have to deselect then reselect the SoftBody3D node for the " +"**Attachments** section to appear." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:158 +#: ../../docs/tutorials/physics/soft_body.rst:162 +msgid "" +"Configuring pinned points to be attached to the BoneAttachment3D node in the " +"SoftBody3D inspector" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:164 +msgid "" +"The last step is to avoid clipping by adding the CharacterBody3D ``Player`` " +"(the scene's root node) to the **Parent Collision Ignore** property of the " +"SoftBody3D." +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:167 +#: ../../docs/tutorials/physics/soft_body.rst:171 +msgid "Setting up the collision exception in the SoftBody3D inspector" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:173 msgid "Play the scene and the cloak should simulate correctly." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:69 +#: ../../docs/tutorials/physics/soft_body.rst:175 +#: ../../docs/tutorials/physics/soft_body.rst:179 +msgid "Final result when running the project's main scene" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:181 msgid "" -"This covers the basic settings of softbody, experiment with the parameters " -"to achieve the effect you are aiming for when making your game." +"This covers the basic settings of a soft body simulation. Experiment with " +"the parameters to achieve the effect you are aiming for when making your " +"game." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:72 -msgid "Using Imported Meshes" +#: ../../docs/tutorials/physics/soft_body.rst:186 +msgid "" +"The cloak will not appear when viewed from certain angles due to backface " +"culling. To resolve this, you can disable backface culling by assigning a " +"new StandardMaterial3D, then setting its cull mode to **Disabled**. This " +"will make the material render both sides of the plane." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:74 +#: ../../docs/tutorials/physics/soft_body.rst:192 +msgid "Using imported meshes" +msgstr "" + +#: ../../docs/tutorials/physics/soft_body.rst:194 msgid "" "The **Save to File** option in the Advanced Import Settings dialog allows " "you to save a mesh to a standalone resource file that you can then attach to " -"``SoftBody3D`` nodes." +"SoftBody3D nodes." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:78 +#: ../../docs/tutorials/physics/soft_body.rst:198 msgid "" "You may also want to disable LOD generation or change the LOD generation " -"options when importing a mesh for use with ``SoftBody3D``. The default " -"import settings will produce an LOD that merges adjacent faces that are " -"nearly flat with respect to each other, even at very close render distances. " -"This works well for static meshes, but is often undesirable for use with " -"``SoftBody3D`` if you want these faces to be able to bend and move with " -"respect to each other, instead of being rendered as a single plane." +"options when importing a mesh for use with SoftBody3D. The default import " +"settings will produce an LOD that merges adjacent faces that are nearly flat " +"with respect to each other, even at very close render distances. This works " +"well for static meshes, but is often undesirable for use with SoftBody3D if " +"you want these faces to be able to bend and move with respect to each other, " +"instead of being rendered as a single plane." msgstr "" -#: ../../docs/tutorials/physics/soft_body.rst:86 +#: ../../docs/tutorials/physics/soft_body.rst:206 msgid "" "See :ref:`doc_importing_3d_scenes_import_configuration` " "and :ref:`doc_mesh_lod` for more details." @@ -95441,7 +96249,7 @@ msgstr "" #: ../../docs/tutorials/platform/android/android_library.rst:182 #: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:315 #: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:362 -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2476 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2497 #: ../../docs/tutorials/scripting/gdscript/static_typing.rst:195 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:103 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:284 @@ -95449,7 +96257,7 @@ msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:360 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:386 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:883 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:147 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:151 msgid "Example:" msgstr "" @@ -96525,6 +97333,186 @@ msgstr "" msgid "This example creates an intent to send a text:" msgstr "" +#: ../../docs/tutorials/platform/android/javaclasswrapper_and_androidruntimeplugin.rst:138 +msgid "Example: Saving an image to the Android gallery" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:4 +msgid "Resolving crashes on Android" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:6 +msgid "" +"When your game crashes on Android, you often see obfuscated stack traces in " +"Play Console or other crash reporting tools like Firebase Crashlytics. To " +"make these stack traces human-readable (symbolicated), you need native debug " +"symbols that correspond to your game's exported build." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:10 +msgid "" +"Godot now provides downloadable native debug symbols for each official " +"export template." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:13 +msgid "Getting Native Debug symbols for official templates" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:15 +msgid "" +"Native debug symbol files are provided for every stable Godot release and " +"can be downloaded from the `GitHub release page `_." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:18 +msgid "" +"For example, to get the native debug symbols for version ``4.5.1.stable``:" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:20 +msgid "" +"Go to the `4.5.1.stable release page `_" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:21 +msgid "" +"Download the release artifact " +"``Godot_native_debug_symbols.4.5.1.stable.template_release.android.zip``" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:24 +msgid "Getting Native Debug symbols for custom builds" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:26 +msgid "" +"Your exported template and its native debug symbols must come from the " +"**same build**, so you can use the official symbols only if you are using " +"the **official export templates**. If you are building **custom export " +"templates**, you need to generate matching symbol files yourself." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:30 +msgid "" +"To do so, add ``debug_symbols=yes separate_debug_symbols=yes`` to your scons " +"build command. This will generate a file named ``android-template-release-" +"native-symbols.zip`` containing the native debug symbols for your custom " +"build." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:33 +msgid "For example," +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:39 +msgid "" +"If you are building for multiple architectures, you should include the " +"``separate_debug_symbols=yes`` only in the last build command, similar to " +"how ``generate_android_binaries=yes`` is used." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:50 +msgid "Uploading Symbols to Google Play Console" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:52 +msgid "Follow these steps to upload the native debug symbols:" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:54 +msgid "Open `Play Console `_." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:55 +msgid "Select any app." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:56 +msgid "" +"In the left menu, navigate to ``Test and release > Latest releases and " +"bundles``." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:60 +msgid "Now choose the relevant bundle and open it." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:64 +msgid "" +"Select the ``Downloads`` tab, and scroll down to the ``Assets`` section." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:68 +msgid "Next to ``Native debug symbols``, click the upload arrow icon." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:72 +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:87 +msgid "" +"Select and upload the corresponding native debug symbols file for that build " +"version." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:76 +msgid "Alternatively, you can upload the symbols when creating a new release:" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:78 +msgid "On the Create release page, locate your new release bundle." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:82 +msgid "Click the three-dot menu beside it." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:83 +msgid "Choose ``Upload native debug symbols (.zip)`` from the menu." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:90 +msgid "Manually Symbolicating Crash Logs" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:92 +msgid "" +"You can also symbolicate the crash logs manually using the `ndk-stack " +"`_ tool included in the " +"Android NDK." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:96 +msgid "" +"If you already have the Android SDK installed, you can find the ``ndk-" +"stack`` tool inside the ``ndk`` folder in your SDK location. Otherwise, you " +"can download the NDK directly from the `NDK downloads page `_." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:99 +msgid "" +"Extract the native debug symbols zip you downloaded earlier (or generated " +"with your custom build)." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:100 +msgid "Save your crash log to a text file (for example, ``crash.txt``)." +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:101 +msgid "" +"Run ndk-stack with the path to the symbol directory that matches the crash's " +"CPU architecture (for example, ``arm64-v8a``):" +msgstr "" + +#: ../../docs/tutorials/platform/android/resolving_crashes_on_android.rst:107 +msgid "" +"The output will display a symbolicated trace, showing file names and line " +"numbers in Godot's source code (or your custom build)." +msgstr "" + #: ../../docs/tutorials/platform/ios/index.rst:5 msgid "iOS plugins" msgstr "" @@ -98039,8 +99027,8 @@ msgstr "" #: ../../docs/tutorials/platform/web/customizing_html5_shell.rst:95 msgid "" -":ref:`Fullsize `: ``fullsize--true``, ``fullsize--false``" +":ref:`Stretch Mode `: ``fullsize--true`` (if **not** Disabled), ``fullsize--false``" msgstr "" #: ../../docs/tutorials/platform/web/customizing_html5_shell.rst:97 @@ -98590,19 +99578,18 @@ msgstr "" msgid "To continue with the example, use the following values:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:71 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:69 msgid "" -"Unchecking the ``Activate now?`` option in C# is always required because, " -"like every other C# script, the EditorPlugin script needs to be compiled " -"which requires building the project. After building the project the plugin " -"can be enabled in the ``Plugins`` tab of ``Project Settings``." +"In C#, the EditorPlugin script needs to be compiled, which requires building " +"the project. After building the project the plugin can be enabled in the " +"``Plugins`` tab of ``Project Settings``." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:76 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:73 msgid "You should end up with a directory structure like this:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:80 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:77 msgid "" "``plugin.cfg`` is an INI file with metadata about your plugin. The name and " "description help people understand what it does. Your name helps you get " @@ -98613,11 +99600,11 @@ msgid "" "once it is active." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:89 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:86 msgid "The script file" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:91 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:88 msgid "" "Upon creation of the plugin, the dialog will automatically open the " "EditorPlugin script for you. The script has two requirements that you cannot " @@ -98625,14 +99612,14 @@ msgid "" "the editor, and it must inherit from :ref:`class_EditorPlugin`." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:98 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:95 msgid "" "In addition to the EditorPlugin script, any other GDScript that your plugin " "uses must *also* be a tool. Any GDScript without ``@tool`` used by the " "editor will act like an empty file!" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:102 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:99 msgid "" "It's important to deal with initialization and clean-up of resources. A good " "practice is to use the virtual function :ref:`_enter_tree() " @@ -98642,15 +99629,15 @@ msgid "" "should look something like this:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:146 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:143 msgid "This is a good template to use when creating new plugins." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:149 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:146 msgid "A custom node" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:151 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:148 msgid "" "Sometimes you want a certain behavior in many nodes, such as a custom scene " "or control that can be reused. Instancing is helpful in a lot of cases, but " @@ -98659,15 +99646,22 @@ msgid "" "a custom behavior." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:159 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:156 msgid "" -"Nodes added via an EditorPlugin are \"CustomType\" nodes. While they work " -"with any scripting language, they have fewer features than :ref:`the Script " -"Class system `. If you are writing GDScript " -"or NativeScript, we recommend using Script Classes instead." +"Nodes added via an EditorPlugin's :ref:`add_custom_type() " +"` function are \"custom type\" " +"nodes. While they work with any scripting language, they have fewer features " +"than :ref:`the Script Class system `. If you " +"are using GDScript or GDExtension, we recommend using Script Classes instead." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:164 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:162 +msgid "" +"Custom types are still the recommended approach for C#, as it does not " +"support Script Classes." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:165 msgid "" "To create a new node type, you can use the function :ref:`add_custom_type() " "` from " @@ -98678,14 +99672,14 @@ msgid "" "runs in the editor." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:171 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:172 msgid "" "For this tutorial, we'll create a button that prints a message when clicked. " "For that, we'll need a script that extends from :ref:`class_Button`. It " "could also extend :ref:`class_BaseButton` if you prefer:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:208 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:209 msgid "" "That's it for our basic button. You can save this as ``my_button.gd`` inside " "the plugin folder. You'll also need a 16×16 icon to show in the scene tree. " @@ -98694,7 +99688,7 @@ msgid "" "Godot logo (`preload(\"res://icon.svg\")`)." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:216 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:217 msgid "" "SVG images that are used as custom node icons should have the **Editor > " "Scale With Editor Scale** and **Editor > Convert Colors With Editor " @@ -98703,36 +99697,36 @@ msgid "" "if the icons are designed with the same color palette as Godot's own icons." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:224 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:225 msgid "" "Now, we need to add it as a custom type so it shows on the **Create New " "Node** dialog. For that, change the ``custom_node.gd`` script to the " "following:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:271 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:279 msgid "" "With that done, the plugin should already be available in the plugin list in " "the **Project Settings**, so activate it as explained in `Checking the " "results`_." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:274 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:282 msgid "Then try it out by adding your new node:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:278 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:286 msgid "" "When you add the node, you can see that it already has the script you " "created attached to it. Set a text to the button, save and run the scene. " "When you click the button, you can see some text in the console:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:285 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:293 msgid "A custom dock" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:287 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:295 msgid "" "Sometimes, you need to extend the editor and add tools that are always " "available. An easy way to do it is to add a new dock with a plugin. Docks " @@ -98740,129 +99734,126 @@ msgid "" "usual GUI scenes." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:291 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:299 msgid "" "Creating a custom dock is done just like a custom node. Create a new " "``plugin.cfg`` file in the ``addons/my_custom_dock`` folder, then add the " "following content to it:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:316 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:324 msgid "" "Then create the script ``custom_dock.gd`` in the same folder. Fill it with " "the :ref:`template we've seen before ` to " "get a good start." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:320 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:328 msgid "" "Since we're trying to add a new custom dock, we need to create the contents " "of the dock. This is nothing more than a standard Godot scene: just create a " "new scene in the editor then edit it." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:324 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:332 msgid "" "For an editor dock, the root node **must** be a :ref:`Control " "` or one of its child classes. For this tutorial, you can " -"create a single button. The name of the root node will also be the name that " -"appears on the dock tab, so be sure to give it a short and descriptive name. " -"Also, don't forget to add some text to your button." +"create a single button. Don't forget to add some text to your button." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:332 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:338 msgid "" "Save this scene as ``my_dock.tscn``. Now, we need to grab the scene we " "created then add it as a dock in the editor. For this, you can rely on the " -"function :ref:`add_control_to_dock() " -"` from the :ref:`EditorPlugin " -"` class." +"function :ref:`add_dock() ` from " +"the :ref:`EditorPlugin ` class." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:337 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:343 msgid "" "You need to select a dock position and define the control to add (which is " "the scene you just created). Don't forget to **remove the dock** when the " "plugin is deactivated. The script could look like this:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:397 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:427 msgid "" "Note that, while the dock will initially appear at its specified position, " "the user can freely change its position and save the resulting layout." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:401 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:431 msgid "Checking the results" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:403 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:433 msgid "" "It's now time to check the results of your work. Open the **Project " "Settings** and click on the **Plugins** tab. Your plugin should be the only " "one on the list." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:409 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:439 msgid "" "You can see the plugin is not enabled. Click the **Enable** checkbox to " "activate the plugin. The dock should become visible before you even close " "the settings window. You should now have a custom dock:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:419 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:449 msgid "Registering autoloads/singletons in plugins" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:421 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:451 msgid "" "It is possible for editor plugins to automatically register :ref:`autoloads " "` when the plugin is enabled. This also includes " "unregistering the autoload when the plugin is disabled." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:425 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:455 msgid "" "This makes setting up plugins faster for users, as they no longer have to " "manually add autoloads to their project settings if your editor plugin " "requires the use of an autoload." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:429 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:459 msgid "Use the following code to register a singleton from an editor plugin:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:474 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:504 msgid "Using sub-plugins" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:476 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:506 msgid "" "Often a plugin adds multiple things, for example a custom node and a panel. " "In those cases it might be easier to have a separate plugin script for each " "of those features. Sub-plugins can be used for this." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:480 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:510 msgid "First create all plugins and sub plugins as normal plugins:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:484 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:514 msgid "Then move the sub plugins into the main plugin folder:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:488 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:518 msgid "" "Godot will hide sub-plugins from the plugin list, so that a user can't " "enable or disable them. Instead the main plugin script should enable and " "disable sub-plugins like this:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:509 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:539 msgid "Going beyond" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:511 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:541 msgid "" "Now that you've learned how to make basic plugins, you can extend the editor " "in several ways. Lots of functionality can be added to the editor with " @@ -98870,7 +99861,7 @@ msgid "" "to delve into C++ modules." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_plugins.rst:516 +#: ../../docs/tutorials/plugins/editor/making_plugins.rst:546 msgid "" "You can make your own plugins to help yourself and share them in the `Asset " "Library `_ so that people can " @@ -99566,15 +100557,14 @@ msgstr "" msgid "" "For simple gizmos, inheriting :ref:`EditorNode3DGizmoPlugin " "` is enough. If you want to store some per-" -"gizmo data or you are porting a Godot 3.0 gizmo to 3.1+, you should go with " -"the second approach." +"gizmo data, you should go with the second approach." msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:67 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:66 msgid "Simple approach" msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:69 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:68 msgid "" "The first step is to, in our custom gizmo plugin, override " "the :ref:`_has_gizmo()` " @@ -99582,14 +100572,14 @@ msgid "" "type." msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:83 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:82 msgid "" "Then we can override methods " "like :ref:`_redraw()` " "or all the handle related ones." msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:117 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:116 msgid "" "Note that we created a material in the `_init` method, and retrieved it in " "the `_redraw` method " @@ -99598,11 +100588,11 @@ msgid "" "of the gizmo (selected and/or editable)." msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:122 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:121 msgid "So the final plugin would look somewhat like this:" msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:163 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:162 msgid "" "Note that we just added some handles in the `_redraw` method, but we still " "need to implement the rest of handle-related callbacks " @@ -99610,11 +100600,11 @@ msgid "" "properly working handles." msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:168 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:167 msgid "Alternative approach" msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:170 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:169 msgid "" "In some cases we want to provide our own implementation " "of :ref:`EditorNode3DGizmo`, maybe because we want " @@ -99622,7 +100612,7 @@ msgid "" "gizmo plugin and we don't want to go through the rewriting process." msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:174 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:173 msgid "" "In these cases all we need to do is, in our new gizmo plugin, " "override :ref:`_create_gizmo()`, " @@ -99630,13 +100620,13 @@ msgid "" "to target." msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:199 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:198 msgid "" "This way all the gizmo logic and drawing methods can be implemented in a new " "class extending :ref:`EditorNode3DGizmo`, like so:" msgstr "" -#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:237 +#: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:236 msgid "" "Note that we just added some handles in the `_redraw` method, but we still " "need to implement the rest of handle-related callbacks " @@ -102995,7 +103985,7 @@ msgid "else" msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:155 -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1806 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1827 msgid "for" msgstr "" @@ -103004,7 +103994,7 @@ msgid "See for_." msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:157 -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1794 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1815 msgid "while" msgstr "" @@ -103013,7 +104003,7 @@ msgid "See while_." msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:159 -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1869 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1890 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:451 msgid "match" msgstr "" @@ -103048,7 +104038,6 @@ msgid "" msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:167 -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:454 msgid "pass" msgstr "" @@ -103114,7 +104103,7 @@ msgid "Cast the value to a given type if possible." msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:183 -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1690 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1711 msgid "self" msgstr "" @@ -103265,7 +104254,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:222 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:484 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:492 msgid "Operators" msgstr "" @@ -104035,7 +105024,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:546 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:103 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:107 msgid "Comments" msgstr "" @@ -104409,9 +105398,9 @@ msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:862 msgid "" -"Godot 4.0 added support for typed arrays. On write operations, Godot checks " -"that element values match the specified type, so the array cannot contain " -"invalid values. The GDScript static analyzer takes typed arrays into " +"Godot also features support for typed arrays. On write operations, Godot " +"checks that element values match the specified type, so the array cannot " +"contain invalid values. The GDScript static analyzer takes typed arrays into " "account, however array methods like ``front()`` and ``back()`` still have " "the ``Variant`` return type." msgstr "" @@ -104450,6 +105439,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:910 +#: ../../docs/tutorials/scripting/cpp/core_types.rst:30 msgid "Packed arrays" msgstr "" @@ -104878,7 +105868,7 @@ msgid "See also `Static functions`_ and `Static constructor`_." msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1273 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:141 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:145 msgid "Casting" msgstr "" @@ -104917,9 +105907,9 @@ msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_styleguide.rst:661 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:36 #: ../../docs/tutorials/scripting/how_to_read_the_godot_api.rst:129 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:351 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:357 #: ../../docs/tutorials/shaders/shaders_style_guide.rst:332 -#: ../../docs/engine_details/architecture/object_class.rst:103 +#: ../../docs/engine_details/architecture/object_class.rst:117 msgid "Constants" msgstr "" @@ -104983,7 +105973,7 @@ msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1397 #: ../../docs/tutorials/scripting/gdscript/gdscript_styleguide.rst:655 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:650 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:658 msgid "Functions" msgstr "" @@ -105003,27 +105993,33 @@ msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1414 msgid "" +"By default, all function parameters are required. You can make one or more " +"parameters at the end optional by assigning a default value to them:" +msgstr "" + +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1428 +msgid "" "If a function contains only one line of code, it can be written on one line:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1424 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1438 msgid "" "Functions can also have type specification for the arguments and for the " "return value. Types for arguments can be added in a similar way to variables:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1432 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1446 msgid "" "If a function argument has a default value, it's possible to infer the type:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1439 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1453 msgid "" "The return type of the function can be specified after the arguments list " "using the arrow token (``->``):" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1447 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1461 msgid "" "Functions that have a return type **must** return a proper value. Setting " "the type as ``void`` means the function doesn't return anything. Void " @@ -105031,7 +106027,7 @@ msgid "" "return any value." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1456 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1470 msgid "" "Non-void functions must **always** return a value, so if your code has " "branching statements (such as an ``if``/``else`` construct), all the " @@ -105040,11 +106036,11 @@ msgid "" "block is not executed, the function won't have a valid value to return." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1464 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1478 msgid "Referencing functions" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1466 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1480 msgid "" "Functions are first-class values in terms of the :ref:`Callable " "` object. Referencing a function by name without calling it " @@ -105052,7 +106048,7 @@ msgid "" "functions as arguments." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1488 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1502 msgid "" "Callables **must** be called with the :ref:`call() " "` method. You cannot use the ``()`` operator " @@ -105060,11 +106056,11 @@ msgid "" "function calls." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1493 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1507 msgid "Lambda functions" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1495 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1509 msgid "" "Lambda functions allow you to declare functions that do not belong to a " "class. Instead, a :ref:`Callable ` object is created and " @@ -105072,59 +106068,59 @@ msgid "" "pass around without polluting the class scope." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1504 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1518 msgid "" "To call the created lambda you can use the :ref:`call() " "` method:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1510 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1524 msgid "" "Lambda functions can be named for debugging purposes (the name is displayed " "in the Debugger):" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1517 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1531 msgid "" "You can specify type hints for lambda functions in the same way as for " "regular ones:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1524 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1538 msgid "" "Note that if you want to return a value from a lambda function, an explicit " "``return`` is required (you can't omit ``return``):" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1532 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1546 msgid "Lambda functions capture the local environment:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1543 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1557 msgid "" "Local variables are captured by value once, when the lambda is created. So " "they won't be updated in the lambda if reassigned in the outer function:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1554 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1568 msgid "" "Also, a lambda cannot reassign an outer local variable. After exiting the " "lambda, the variable will be unchanged, because the lambda capture " "implicitly shadows it:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1567 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1581 msgid "" "However, if you use pass-by-reference data types (arrays, dictionaries, and " "objects), then the content changes are shared until you reassign the " "variable:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1582 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1596 msgid "Static functions" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1584 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1598 msgid "" "A function can be declared static. When a function is static, it has no " "access to the instance member variables or ``self``. A static function has " @@ -105132,19 +106128,19 @@ msgid "" "libraries of helper functions:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1592 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1606 msgid "Lambda functions cannot be declared static." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1594 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1608 msgid "See also `Static variables`_ and `Static constructor`_." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1597 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1611 msgid "Variadic functions" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1599 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1613 msgid "" "A variadic function is a function that can take a variable number of " "arguments. Since Godot 4.5, GDScript supports variadic functions. To declare " @@ -105152,20 +106148,20 @@ msgid "" "all the excess arguments into an array." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1615 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1629 msgid "" "A function can have at most one rest parameter, which must be the last one " "in the parameter list. The rest parameter cannot have a default value. " "Static and lambda functions can also be variadic." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1618 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1632 msgid "" "Static typing works for variadic functions too. However, typed arrays are " "currently not supported as a static type of the rest parameter:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1633 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1647 msgid "" "Although you can declare functions as variadic using the rest parameter, " "unpacking parameters when calling a function using *spread syntax* that " @@ -105174,30 +106170,30 @@ msgid "" "of arguments:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1648 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1669 msgid "Abstract functions" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1650 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1671 msgid "See `Abstract classes and methods`_." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1653 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1674 msgid "Statements and control flow" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1655 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1676 msgid "" "Statements are standard and can be assignments, function calls, control flow " "structures, etc (see below). ``;`` as a statement separator is entirely " "optional." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1660 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1681 msgid "Expressions" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1662 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1683 msgid "" "Expressions are sequences of operators and their operands in orderly " "fashion. An expression by itself can be a statement too, though only calls " @@ -105205,24 +106201,24 @@ msgid "" "effects." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1665 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1686 msgid "" "Expressions return values that can be assigned to valid targets. Operands to " "some operator can be another expression. An assignment is not an expression " "and thus does not return any value." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1668 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1689 msgid "Here are some examples of expressions:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1686 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1707 msgid "" "Identifiers, attributes, and subscripts are valid assignment targets. Other " "expressions cannot be on the left side of an assignment." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1692 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1713 msgid "" "``self`` can be used to refer to the current instance and is often " "equivalent to directly referring to symbols available in the current script. " @@ -105233,7 +106229,7 @@ msgid "" "`)." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1716 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1737 msgid "" "Beware that accessing members of child classes in the base class is often " "considered a bad practice, because this blurs the area of responsibility of " @@ -105242,11 +106238,11 @@ msgid "" "the parent class had some expectations about it's descendants." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1723 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1744 msgid "if/else/elif" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1725 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1746 msgid "" "Simple conditions are created by using the ``if``/``else``/``elif`` syntax. " "Parenthesis around conditions are allowed, but not required. Given the " @@ -105254,30 +106250,30 @@ msgid "" "``else``/``if`` to maintain a level of indentation." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1739 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1760 msgid "Short statements can be written on the same line as the condition:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1748 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1769 msgid "" "Sometimes, you might want to assign a different initial value based on a " "boolean expression. In this case, ternary-if expressions come in handy:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1756 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1777 msgid "" "Ternary-if expressions can be nested to handle more than 2 cases. When " "nesting ternary-if expressions, it is recommended to wrap the complete " "expression over multiple lines to preserve readability:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1781 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1802 msgid "" "You may also wish to check if a value is contained within something. You can " "use an ``if`` statement combined with the ``in`` operator to accomplish this:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1796 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1817 msgid "" "Simple loops are created by using ``while`` syntax. Loops can be broken " "using ``break`` or continued using ``continue`` (which skips to the next " @@ -105285,7 +106281,7 @@ msgid "" "iteration):" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1808 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1829 msgid "" "To iterate through a range, such as an array or table, a *for* loop is used. " "When iterating over an array, the current array element is stored in the " @@ -105293,27 +106289,27 @@ msgid "" "loop variable." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1847 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1868 msgid "" "If you want to assign values on an array as it is being iterated through, it " "is best to use ``for i in array.size()``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1856 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1877 msgid "" "The loop variable is local to the for-loop and assigning to it will not " "change the value on the array. Objects passed by reference (such as nodes) " "can still be manipulated by calling methods on the loop variable." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1871 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1892 msgid "" "A ``match`` statement is used to branch execution of a program. It's the " "equivalent of the ``switch`` statement found in many other languages, but " "offers some additional features." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1876 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1897 msgid "" "``match`` is more type strict than the ``==`` operator. For example ``1`` " "will **not** match ``1.0``. The only exception is ``String`` vs " @@ -105321,177 +106317,177 @@ msgid "" "equal to the StringName ``&\"hello\"``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1880 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1901 msgid "Basic syntax" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1892 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1913 msgid "Crash-course for people who are familiar with switch statements" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1894 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1915 msgid "Replace ``switch`` with ``match``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1895 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1916 msgid "Remove ``case``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1896 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1917 msgid "Remove any ``break``\\ s." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1897 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1918 msgid "Change ``default`` to a single underscore." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1900 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1921 msgid "Control flow" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1902 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1923 msgid "" "The patterns are matched from top to bottom. If a pattern matches, the first " "corresponding block will be executed. After that, the execution continues " "below the ``match`` statement." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1907 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1928 msgid "" "The special ``continue`` behavior in ``match`` supported in 3.x was removed " "in Godot 4.0." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1909 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1930 msgid "The following pattern types are available:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1911 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1932 msgid "Literal pattern" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1912 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1933 msgid "Matches a `literal `_:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1924 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1945 msgid "Expression pattern" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1925 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1946 msgid "" "Matches a constant expression, an identifier, or an attribute access " "(``A.B``):" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1937 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1958 msgid "Wildcard pattern" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1938 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1959 msgid "This pattern matches everything. It's written as a single underscore." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1940 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1961 msgid "" "It can be used as the equivalent of the ``default`` in a ``switch`` " "statement in other languages:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1952 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1973 msgid "Binding pattern" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1953 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1974 msgid "" "A binding pattern introduces a new variable. Like the wildcard pattern, it " "matches everything - and also gives that value a name. It's especially " "useful in array and dictionary patterns:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1966 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1987 msgid "Array pattern" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1967 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1988 msgid "" "Matches an array. Every single element of the array pattern is a pattern " "itself, so you can nest them." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1969 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1990 msgid "" "The length of the array is tested first, it has to be the same size as the " "pattern, otherwise the pattern doesn't match." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1971 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1992 msgid "" "**Open-ended array**: An array can be bigger than the pattern by making the " "last subpattern ``..``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1973 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1994 msgid "Every subpattern has to be comma-separated." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1987 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2008 msgid "Dictionary pattern" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1988 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2009 msgid "" "Works in the same way as the array pattern. Every key has to be a constant " "pattern." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1990 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2011 msgid "" "The size of the dictionary is tested first, it has to be the same size as " "the pattern, otherwise the pattern doesn't match." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1992 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2013 msgid "" "**Open-ended dictionary**: A dictionary can be bigger than the pattern by " "making the last subpattern ``..``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1994 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2015 msgid "Every subpattern has to be comma separated." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1996 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2017 msgid "" "If you don't specify a value, then only the existence of the key is checked." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:1998 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2019 msgid "A value pattern is separated from the key pattern with a ``:``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2014 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2035 msgid "Multiple patterns" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2015 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2036 msgid "" "You can also specify multiple patterns separated by a comma. These patterns " "aren't allowed to have any bindings in them." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2026 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2047 msgid "Pattern guards" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2028 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2049 msgid "" "A *pattern guard* is an optional condition that follows the pattern list and " "allows you to make additional checks before choosing a ``match`` branch. " "Unlike a pattern, a pattern guard can be an arbitrary expression." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2032 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2053 msgid "" "Only one branch can be executed per ``match``. Once a branch is chosen, the " "rest are not checked. If you want to use the same pattern for multiple " @@ -105499,41 +106495,42 @@ msgid "" "specify a pattern guard after the list of patterns with the ``when`` keyword:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2052 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2073 msgid "" "If there is no matching pattern for the current branch, the pattern guard is " "**not** evaluated and the patterns of the next branch are checked." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2054 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2075 msgid "If a matching pattern is found, the pattern guard is evaluated." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2056 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2077 msgid "" "If it's true, then the body of the branch is executed and ``match`` ends." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2057 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2078 msgid "If it's false, then the patterns of the next branch are checked." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2060 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2081 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:95 msgid "Classes" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2062 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2083 msgid "" "By default, all script files are unnamed classes. In this case, you can only " "reference them using the file's path, using either a relative or an absolute " "path. For example, if you name a script file ``character.gd``:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2080 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2101 msgid "Registering named classes" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2082 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2103 msgid "" "You can give your class a name to register it as a new type in Godot's " "editor. For that, you use the ``class_name`` keyword. You can optionally use " @@ -105541,7 +106538,7 @@ msgid "" "class will then appear with its new icon in the editor:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2099 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2120 msgid "" "SVG images that are used as custom node icons should have the **Editor > " "Scale With Editor Scale** and **Editor > Convert Icons With Editor " @@ -105550,21 +106547,21 @@ msgid "" "if the icons are designed with the same color palette as Godot's own icons." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2105 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2126 msgid "Here's a class file example:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2126 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2147 msgid "If you want to use ``extends`` too, you can keep both on the same line:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2132 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2153 msgid "" "Named classes are globally registered, which means they become available to " "use in other scripts without the need to ``load`` or ``preload`` them:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2144 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2165 msgid "" "Godot initializes non-static variables every time you create an instance, " "and this includes arrays and dictionaries. This is in the spirit of thread " @@ -105572,7 +106569,7 @@ msgid "" "user knowing." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2150 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2171 msgid "" "The Godot editor will hide these custom classes with names that begin with " "the prefix \"Editor\" in the 'Create New Node' or 'Create New Scene' dialog " @@ -105581,24 +106578,24 @@ msgid "" "the built-in editor nodes used by the Godot editor." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2159 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2180 msgid "Abstract classes and methods" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2161 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2182 msgid "" "Since Godot 4.5, you can define abstract classes and methods using the " "``@abstract`` annotation." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2164 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2185 msgid "" "An abstract class is a class that cannot be instantiated directly. Instead, " "it is meant to be inherited by other classes. Attempting to instantiate an " "abstract class will result in an error." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2168 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2189 msgid "" "An abstract method is a method that has no implementation. Therefore, a " "newline or a semicolon is expected after the function header. This defines a " @@ -105606,7 +106603,7 @@ msgid "" "signature must be compatible when overriding." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2173 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2194 msgid "" "Inheriting classes must either provide implementations for all abstract " "methods, or the inheriting class must be marked as abstract. If a class has " @@ -105615,13 +106612,13 @@ msgid "" "true: an abstract class is allowed to have no abstract methods." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2181 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2202 msgid "" "If you want to declare a method as optional to be overridden, you should use " "a non-abstract method and provide a default implementation." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2184 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2205 msgid "" "For example, you could have an abstract class called ``Shape`` that defines " "an abstract method called ``draw()``. You can then create subclasses like " @@ -105630,102 +106627,102 @@ msgid "" "having to implement all the details in the abstract class itself:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2205 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2226 msgid "" "Both inner classes and classes created using ``class_name`` can be abstract. " "This example creates two abstract classes, one of which is a subclass of " "another abstract class:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2228 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2249 msgid "" "Since an abstract class cannot be instantiated, it is not possible to attach " "an abstract class to a node. If you attempt to do so, the engine will print " "an error when running the scene:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2236 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2257 msgid "" "Unnamed classes can also be defined as abstract, the ``@abstract`` " "annotation must precede ``extends``:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2245 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2266 #: ../../docs/tutorials/scripting/how_to_read_the_godot_api.rst:13 #: ../../docs/tutorials/scripting/cross_language_scripting.rst:254 msgid "Inheritance" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2247 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2268 msgid "A class (stored as a file) can inherit from:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2249 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2270 msgid "A global class." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2250 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2271 msgid "Another class file." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2251 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2272 msgid "An inner class inside another class file." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2253 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2274 msgid "Multiple inheritance is not allowed." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2255 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2276 msgid "Inheritance uses the ``extends`` keyword:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2270 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2291 msgid "" "If inheritance is not explicitly defined, the class will default to " "inheriting :ref:`class_RefCounted`." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2273 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2294 msgid "" "To check if a given instance inherits from a given class, the ``is`` keyword " "can be used:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2287 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2308 msgid "" "To call a function in a *super class* (i.e. one ``extend``-ed in your " "current class), use the ``super`` keyword:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2294 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2315 msgid "" "This is especially useful because functions in extending classes replace " "functions with the same name in their super classes. If you still want to " "call them, you can use ``super``:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2303 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2324 msgid "" "If you need to call a different function from the super class, you can " "specify the function name with the attribute operator:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2316 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2337 msgid "" "One of the common misconceptions is trying to override *non-virtual* engine " "methods such as ``get_class()``, ``queue_free()``, etc. This is not " "supported for technical reasons." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2319 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2340 msgid "" "In Godot 3, you can *shadow* engine methods in GDScript, and it will work if " "you call this method in GDScript. However, the engine will **not** execute " "your code if the method is called inside the engine on some event." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2322 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2343 msgid "" "In Godot 4, even shadowing may not always work, as GDScript optimizes native " "method calls. Therefore, we added the ``NATIVE_METHOD_OVERRIDE`` warning, " @@ -105733,7 +106730,7 @@ msgid "" "disabling or ignoring the warning." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2326 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2347 msgid "" "Note that this does not apply to virtual methods such as ``_ready()``, " "``_process()`` and others (marked with the ``virtual`` qualifier in the " @@ -105742,11 +106739,11 @@ msgid "" "GDScript. Signals and notifications can also be useful for these purposes." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2332 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2353 msgid "Class constructor" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2334 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2355 msgid "" "The class constructor, called on class instantiation, is named ``_init``. If " "you want to call the base class constructor, you can also use the ``super`` " @@ -105755,15 +106752,15 @@ msgid "" "to call the explicit constructor:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2345 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2366 msgid "This is better explained through examples. Consider this scenario:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2371 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2392 msgid "There are a few things to keep in mind here:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2373 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2394 msgid "" "If the inherited class (``state.gd``) defines an ``_init`` constructor that " "takes arguments (``e`` in this case), then the inheriting class " @@ -105771,19 +106768,19 @@ msgid "" "parameters to ``_init`` from ``state.gd``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2376 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2397 msgid "" "``idle.gd`` can have a different number of arguments than the base class " "``state.gd``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2377 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2398 msgid "" "In the example above, ``e`` passed to the ``state.gd`` constructor is the " "same ``e`` passed in to ``idle.gd``." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2379 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2400 msgid "" "If ``idle.gd``'s ``_init`` constructor takes 0 arguments, it still needs to " "pass some value to the ``state.gd`` base class, even if it does nothing. " @@ -105791,45 +106788,37 @@ msgid "" "constructor as well, not just variables, e.g.:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2387 -msgid "func _init():" -msgstr "" - -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2388 -msgid "super(5)" -msgstr "" - -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2391 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2412 msgid "Static constructor" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2393 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2414 msgid "" "A static constructor is a static function ``_static_init`` that is called " "automatically when the class is loaded, after the static variables have been " "initialized:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2403 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2424 msgid "" "A static constructor cannot take arguments and must not return any value." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2408 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2429 msgid "Inner classes" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2410 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2431 msgid "" "A class file can contain inner classes. Inner classes are defined using the " "``class`` keyword. They are instanced using the ``ClassName.new()`` function." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2435 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2456 msgid "Classes as resources" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2437 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2458 msgid "" "Classes stored as files are treated as :ref:`GDScripts `. " "They must be loaded from disk to access them in other classes. This is done " @@ -105838,27 +106827,27 @@ msgid "" "class object:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2456 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2477 msgid "Exports" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2460 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2481 msgid "" "Documentation about exports has been moved to :ref:`doc_gdscript_exports`." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2466 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2487 msgid "Properties (setters and getters)" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2468 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2489 msgid "" "Sometimes, you want a class' member variable to do more than just hold data " "and actually perform some validation or computation whenever its value " "changes. It may also be desired to encapsulate its access in some way." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2472 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2493 msgid "" "For this, GDScript provides a special syntax to define properties using the " "``set`` and ``get`` keywords after a variable declaration. Then you can " @@ -105866,7 +106855,7 @@ msgid "" "assigned." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2489 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2510 msgid "" "Unlike ``setget`` in previous Godot versions, ``set`` and ``get`` methods " "are **always** called (except as noted below), even when accessed inside the " @@ -105875,11 +106864,11 @@ msgid "" "variable for direct access and make the property code use that name." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2495 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2516 msgid "Alternative syntax" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2497 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2518 msgid "" "Also there is another notation to use existing class functions if you want " "to split the code from the variable declaration or you need to reuse the " @@ -105887,17 +106876,17 @@ msgid "" "the setter/getter is being called for):" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2505 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2526 msgid "This can also be done in the same line:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2511 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2532 msgid "" "The setter and getter must use the same notation, mixing styles for the same " "variable is not allowed." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2515 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2536 msgid "" "You cannot specify type hints for *inline* setters and getters. This is done " "on purpose to reduce the boilerplate. If the variable is typed, then the " @@ -105906,18 +106895,18 @@ msgid "" "and the type must match the variable's type or be a wider type." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2520 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2541 msgid "When setter/getter is not called" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2522 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2543 msgid "" "When a variable is initialized, the value of the initializer will be written " "directly to the variable. Including if the ``@onready`` annotation is " "applied to the variable." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2525 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2546 msgid "" "Using the variable's name to set it inside its own setter or to get it " "inside its own getter will directly access the underlying member, so it " @@ -105925,21 +106914,21 @@ msgid "" "another variable:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2538 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2559 msgid "This also applies to the alternative syntax:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2549 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2570 msgid "" "The exception does **not** propagate to other functions called in the setter/" "getter. For example, the following code **will** cause an infinite recursion:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2564 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2585 msgid "Tool mode" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2566 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2587 msgid "" "By default, scripts don't run inside the editor and only the exported " "properties can be changed. In some cases, it is desired that they do run " @@ -105948,22 +106937,22 @@ msgid "" "the top of the file:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2581 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2602 msgid "See :ref:`doc_running_code_in_the_editor` for more information." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2583 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2604 msgid "" "Be cautious when freeing nodes with ``queue_free()`` or ``free()`` in a tool " "script (especially the script's owner itself). As tool scripts run their " "code in the editor, misusing them may lead to crashing the editor." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2591 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2612 msgid "Memory management" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2593 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2614 msgid "" "Godot implements reference counting to free certain instances that are no " "longer used, instead of a garbage collector, or requiring purely manual " @@ -105975,13 +106964,13 @@ msgid "" "with ``free()`` (or ``queue_free()`` for Nodes)." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2604 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2625 msgid "" "If a :ref:`class_Node` is deleted via ``free()`` or ``queue_free()``, all of " "its children will also recursively be deleted." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2607 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2628 msgid "" "To avoid reference cycles that can't be freed, a :ref:`class_WeakRef` " "function is provided for creating weak references, which allow access to the " @@ -105989,20 +106978,20 @@ msgid "" "example:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2632 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2653 msgid "" "Alternatively, when not using references, the " "``is_instance_valid(instance)`` can be used to check if an object has been " "freed." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2641 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2662 msgid "" "Signals are a tool to emit messages from an object that other objects can " "react to. To create custom signals for a class, use the ``signal`` keyword." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2654 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2675 msgid "" "Signals are a `Callback `_ mechanism. They also fill the role of " @@ -106011,31 +107000,31 @@ msgid "" "the Game Programming Patterns ebook." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2661 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2682 msgid "" "You can connect these signals to methods the same way you connect built-in " "signals of nodes like :ref:`class_Button` or :ref:`class_RigidBody3D`." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2664 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2685 msgid "" "In the example below, we connect the ``health_depleted`` signal from a " "``Character`` node to a ``Game`` node. When the ``Character`` node emits the " "signal, the game node's ``_on_character_health_depleted`` is called:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2680 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2701 msgid "You can emit as many arguments as you want along with a signal." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2682 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2703 msgid "" "Here is an example where this is useful. Let's say we want a life bar on " "screen to react to health changes with an animation, but we want to keep the " "user interface separate from the player in our scene tree." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2686 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2707 msgid "" "In our ``character.gd`` script, we define a ``health_changed`` signal and " "emit it with :ref:`Signal.emit() `, and from a " @@ -106043,26 +107032,26 @@ msgid "" "using the :ref:`Signal.connect() ` method:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2727 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2748 msgid "" "In the ``Game`` node, we get both the ``Character`` and ``Lifebar`` nodes, " "then connect the character, that emits the signal, to the receiver, the " "``Lifebar`` node in this case." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2741 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2762 msgid "" "This allows the ``Lifebar`` to react to health changes without coupling it " "to the ``Character`` node." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2744 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2765 msgid "" "You can write optional argument names in parentheses after the signal's " "definition:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2751 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2772 msgid "" "These arguments show up in the editor's node dock, and Godot can use them to " "generate callback functions for you. However, you can still emit any number " @@ -106070,7 +107059,7 @@ msgid "" "values." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2757 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2778 msgid "" "You can also create copies of GDScript Callable objects which accept " "additional arguments using :ref:`Callable.bind() " @@ -106079,13 +107068,13 @@ msgid "" "the data that you need." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2762 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2783 msgid "" "When the signal is emitted, the callback method receives the bound values, " "in addition to those provided by the signal." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2765 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2786 msgid "" "Building on the example above, let's say we want to display a log of the " "damage taken by each character on the screen, like ``Player1 took 22 " @@ -106094,16 +107083,16 @@ msgid "" "console, we can add the character's name using the bind method:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2781 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2802 msgid "" "Our ``BattleLog`` node receives each bound element as an extra argument:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2796 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2817 msgid "Awaiting signals or coroutines" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2798 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2819 msgid "" "The ``await`` keyword can be used to create `coroutines `_ which wait until a signal is emitted " @@ -106113,45 +107102,45 @@ msgid "" "finishes), it will resume execution from the point on where it stopped." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2803 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2824 msgid "" "For example, to stop execution until the user presses a button, you can do " "something like this:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2813 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2834 msgid "" "In this case, the ``wait_confirmation`` becomes a coroutine, which means " "that the caller also needs to await it:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2825 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2846 msgid "" "Note that requesting a coroutine's return value without ``await`` will " "trigger an error:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2832 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2853 msgid "" "However, if you don't depend on the result, you can just call it " "asynchronously, which won't stop execution and won't make the current " "function a coroutine:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2841 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2862 msgid "" "If you use await with an expression that isn't a signal nor a coroutine, the " "value will be returned immediately and the function won't give the control " "back to the caller:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2853 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2874 msgid "" "This also means that returning a signal from a function that isn't a " "coroutine will make the caller await that signal:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2864 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2885 msgid "" "Unlike ``yield`` in previous Godot versions, you cannot obtain the function " "state object. This is done to ensure type safety. With this type safety in " @@ -106159,11 +107148,11 @@ msgid "" "returns a function state object during runtime." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2870 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2891 msgid "Assert keyword" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2872 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2893 msgid "" "The ``assert`` keyword can be used to check conditions in debug builds. " "These assertions are ignored in non-debug builds. This means that the " @@ -106173,13 +107162,13 @@ msgid "" "depending on whether the project is run in a debug build." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2884 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2905 msgid "" "When running a project from the editor, the project will be paused if an " "assertion error occurs." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2887 +#: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2908 msgid "" "You can optionally pass a custom error message to be shown if the assertion " "fails:" @@ -106350,7 +107339,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_advanced.rst:173 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:259 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:265 msgid "Arrays" msgstr "" @@ -106851,8 +107840,8 @@ msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:256 msgid "" -"Since Godot 4.0, nodes can be directly exported as properties in a script " -"without having to use NodePaths:" +"Nodes can also be directly exported as properties in a script without having " +"to use NodePaths:" msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:268 @@ -107151,11 +108140,38 @@ msgid "" msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:546 +msgid "Reading an exported variable's value early on" +msgstr "" + +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:548 +msgid "" +"If you read an exported variable's value in :ref:`_init() " +"`, it will return the default value " +"specified in the export annotation instead of the value that was set in the " +"inspector. This is because assigning values from the saved scene/resource " +"file occurs *after* object initialization; until then, the default value is " +"used." +msgstr "" + +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:553 +msgid "" +"To get the value that was set in the inspector (and therefore saved in the " +"scene/resource file), you need to read it *after* the object is constructed, " +"such as in :ref:`Node._ready() `. You can " +"also read the value in a setter that's defined on the exported property, " +"which is useful in custom resources where ``_ready()`` is not available:" +msgstr "" + +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:570 +msgid "Results in:" +msgstr "" + +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:578 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:634 msgid "Advanced exports" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:548 +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:580 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:636 msgid "" "Not every type of export can be provided on the level of the language itself " @@ -107163,7 +108179,7 @@ msgid "" "less common exporting features which can be implemented with a low-level API." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:552 +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:584 msgid "" "Before reading further, you should get familiar with the way properties are " "handled and how they can be customized with :ref:`_set() " @@ -107173,14 +108189,14 @@ msgid "" "in :ref:`doc_accessing_data_or_logic_from_object`." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:559 +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:591 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:647 msgid "" "For binding properties using the above methods in C++, " "see :ref:`doc_binding_properties_using_set_get_property_list`." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:562 +#: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:594 msgid "" "The script must operate in the ``@tool`` mode so the above methods can work " "from within the editor." @@ -107308,6 +108324,7 @@ msgid "Members that are applicable for documentation:" msgstr "" #: ../../docs/tutorials/scripting/gdscript/gdscript_documentation_comments.rst:79 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:967 msgid "Enum" msgstr "" @@ -109183,75 +110200,67 @@ msgstr "" msgid "And the same callback, with type hints:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:452 -msgid "::" -msgstr "" - -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:453 -msgid "func _on_area_2d_body_entered(body: PhysicsBody2D) -> void:" -msgstr "" - -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:457 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:458 msgid "Warning system" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:461 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:462 msgid "" "Detailed documentation about the GDScript warning system has been moved " "to :ref:`doc_gdscript_warning_system`." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:464 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:465 msgid "" "Godot gives you warnings about your code as you write it. The engine " "identifies sections of your code that may lead to issues at runtime, but " "lets you decide whether or not you want to leave the code as it is." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:468 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:469 msgid "" "We have a number of warnings aimed specifically at users of typed GDScript. " "By default, these warnings are disabled, you can enable them in Project " "Settings (**Debug > GDScript**, make sure **Advanced Settings** is enabled)." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:472 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:473 msgid "" "You can enable the ``UNTYPED_DECLARATION`` warning if you want to always use " "static types. Additionally, you can enable the ``INFERRED_DECLARATION`` " "warning if you prefer a more readable and reliable, but more verbose syntax." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:476 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:477 msgid "" "``UNSAFE_*`` warnings make unsafe operations more noticeable, than unsafe " "lines. Currently, ``UNSAFE_*`` warnings do not cover all cases that unsafe " "lines cover." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:480 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:481 msgid "Common unsafe operations and their safe counterparts" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:483 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:484 msgid "Global scope methods" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:485 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:486 msgid "" "The following global scope methods are not statically typed, but they have " "typed counterparts available. These methods return statically typed values:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:489 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:490 msgid "Method" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:489 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:490 msgid "Statically typed equivalents" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:491 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:492 msgid ":ref:`abs()`" msgstr "" @@ -109279,7 +110288,7 @@ msgid "" "`" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:500 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:501 msgid ":ref:`ceil() `" msgstr "" @@ -109301,7 +110310,7 @@ msgstr "" msgid ":ref:`Vector4.ceil() `" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:506 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:507 msgid ":ref:`clamp() `" msgstr "" @@ -109337,7 +110346,7 @@ msgstr "" msgid "(untyped ``clamp()`` does not work on Color)" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:517 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:518 msgid ":ref:`floor() `" msgstr "" @@ -109359,7 +110368,7 @@ msgstr "" msgid ":ref:`Vector4.floor() `" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:523 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:524 msgid ":ref:`lerp() `" msgstr "" @@ -109403,7 +110412,7 @@ msgid "" "`" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:533 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:534 msgid ":ref:`round() `" msgstr "" @@ -109425,7 +110434,7 @@ msgstr "" msgid ":ref:`Vector4.round() `" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:539 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:540 msgid ":ref:`sign() `" msgstr "" @@ -109455,7 +110464,7 @@ msgid "" "`" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:548 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:549 msgid ":ref:`snapped() `" msgstr "" @@ -109488,18 +110497,18 @@ msgid "" "`" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:558 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:559 msgid "" "When using static typing, use the typed global scope methods whenever " "possible. This ensures you have safe lines and benefit from typed " "instructions for better performance." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:563 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:564 msgid "``UNSAFE_PROPERTY_ACCESS`` and ``UNSAFE_METHOD_ACCESS`` warnings" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:565 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:566 msgid "" "In this example, we aim to set a property and call a method on an object " "that has a script attached with ``class_name MyScript`` and that ``extends " @@ -109508,7 +110517,7 @@ msgid "" "if the property and method exist and then set and call them if they do:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:579 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:580 msgid "" "However, this code will produce ``UNSAFE_PROPERTY_ACCESS`` and " "``UNSAFE_METHOD_ACCESS`` warnings as the property and method are not present " @@ -109518,18 +110527,18 @@ msgid "" "which you can set its properties and call its methods:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:593 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:594 msgid "" "Alternatively, you can declare a variable and use the ``as`` operator to try " "to cast the object. You'll then want to check whether the cast was " "successful by confirming that the variable was assigned:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:605 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:606 msgid "``UNSAFE_CAST`` warning" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:607 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:608 msgid "" "In this example, we would like the label connected to an object entering our " "collision area to show the area's name. Once the object enters the collision " @@ -109538,7 +110547,7 @@ msgid "" "could be achieved like this:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:618 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:619 msgid "" "This piece of code produces an ``UNSAFE_PROPERTY_ACCESS`` warning because " "``label`` is not defined in ``Node2D``. To solve this, we could first check " @@ -109546,7 +110555,7 @@ msgid "" "settings its text property like so:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:629 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:630 msgid "" "However, this produces an ``UNSAFE_CAST`` warning because ``body.label`` is " "of a ``Variant`` type. To safely get the property in the type you want, you " @@ -109557,27 +110566,27 @@ msgid "" "with the object:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:645 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:646 msgid "Cases where you can't specify types" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:649 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:650 msgid "" "To wrap up this introduction, let's mention cases where you can't use type " "hints. This will trigger a **syntax error**." msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:652 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:653 msgid "" "You can't specify the type of individual elements in an array or a " "dictionary:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:663 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:664 msgid "Nested types are not currently supported:" msgstr "" -#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:675 +#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:676 msgid "" "Typed GDScript is a powerful tool. It helps you write more structured code, " "avoid common errors, and create scalable and reliable systems. Static types " @@ -110254,7 +111263,7 @@ msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:14 msgid "" "C# is a high-level programming language developed by Microsoft. In Godot, it " -"is implemented with .NET 8.0." +"is implemented with the modern .NET runtime." msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:19 @@ -110275,7 +111284,7 @@ msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:36 msgid "" -"Godot bundles the parts of .NET needed to run already compiled games. " +"Godot bundles the parts of .NET needed to run already-compiled games. " "However, Godot does not bundle the tools required to build and compile " "games, such as MSBuild and the C# compiler. These are included in the .NET " "SDK, and need to be installed separately." @@ -110290,27 +111299,28 @@ msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:44 msgid "" "Download and install the latest stable version of the SDK from the `.NET " -"download page `__." +"download page `__. Godot 4.5 " +"requires .NET 8 or later, but exporting to Android requires .NET 9 or later." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:49 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:50 msgid "" "Be sure to install the 64-bit version of the SDK(s) if you are using the 64-" "bit version of Godot." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:52 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:53 msgid "" "If you are building Godot from source, make sure to follow the steps to " "enable .NET support in your build as outlined in " "the :ref:`doc_compiling_with_dotnet` page." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:59 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:60 msgid "Configuring an external editor" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:61 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:62 msgid "" "C# support in Godot's built-in script editor is minimal. Consider using an " "external IDE or editor, such as `Visual Studio Code `__." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:84 -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:99 -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:168 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:85 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:100 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:169 msgid "In Godot's **Editor → Editor Settings** menu:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:86 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:87 msgid "" "Set **Dotnet** -> **Editor** -> **External Editor** to **JetBrains Rider**." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:88 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:89 msgid "In Rider:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:90 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:91 msgid "Set **MSBuild version** to **.NET Core**." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:91 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:92 msgid "" "If you are using a Rider version below 2024.2, install the **Godot support** " "plugin. This functionality is now built into Rider." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:96 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:97 msgid "" "After reading the \"Prerequisites\" section, you can download and install " "`Visual Studio Code `__ (aka VS " "Code)." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:101 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:102 msgid "" "Set **Dotnet** -> **Editor** -> **External Editor** to **Visual Studio " "Code**." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:103 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:104 msgid "In Visual Studio Code:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:105 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:106 msgid "" "Install the `C# `__ extension." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:107 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:108 msgid "" "To configure a project for debugging, you need a ``tasks.json`` and " "``launch.json`` file in the ``.vscode`` folder with the necessary " "configuration." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:110 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:111 msgid "Here is an example ``launch.json``:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:130 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:131 msgid "" "For this launch configuration to work, you need to either setup a GODOT4 " "environment variable that points to the Godot executable, or replace " "``program`` parameter with the path to the Godot executable." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:134 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:135 msgid "Here is an example ``tasks.json``:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:153 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:154 msgid "" "Now, when you start the debugger in Visual Studio Code, your Godot project " "will run." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:156 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:157 msgid "Visual Studio (Windows only)" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:158 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:159 msgid "" "Download and install the latest version of `Visual Studio `__. Visual Studio will include the " @@ -110432,26 +111442,26 @@ msgid "" "to manually install the things listed in the \"Prerequisites\" section." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:164 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:165 msgid "While installing Visual Studio, select this workload:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:166 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:167 msgid ".NET desktop development" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:170 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:171 msgid "" "Set **Dotnet** -> **Editor** -> **External Editor** to **Visual Studio**." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:172 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:173 msgid "" "If you see an error like \"Unable to find package Godot.NET.Sdk\", your " "NuGet configuration may be incorrect and need to be fixed." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:175 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:176 msgid "" "A simple way to fix the NuGet configuration file is to regenerate it. In a " "file explorer window, go to ``%AppData%\\NuGet``. Rename or delete the " @@ -110459,7 +111469,7 @@ msgid "" "will be automatically created with default values." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:180 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:181 msgid "" "To debug your C# scripts using Visual Studio, open the .sln file that is " "generated after opening the first C# script in the editor. In the **Debug** " @@ -110475,18 +111485,18 @@ msgid "" "the green start button, and your game will begin playing in debug mode." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:194 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:195 msgid "Creating a C# script" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:196 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:197 msgid "" "After you successfully set up C# for Godot, you should see the following " "option when selecting **Attach Script** in the context menu of a node in " "your scene:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:201 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:202 msgid "" "Note that while some specifics change, most concepts work the same when " "using C# for scripting. If you're new to Godot, you may want to follow the " @@ -110494,11 +111504,11 @@ msgid "" "pages still lack C# examples, most notions can be transferred from GDScript." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:208 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:209 msgid "Project setup and workflow" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:210 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:211 msgid "" "When you create the first C# script, Godot initializes the C# project files " "for your Godot project. This includes generating a C# solution (``.sln``) " @@ -110509,12 +111519,12 @@ msgid "" "sometimes help to delete the ``.godot/mono`` folder and let it regenerate." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:223 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:224 msgid "" "Here's a blank C# script with some comments to demonstrate how it works." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:249 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:250 msgid "" "As you can see, functions normally in global scope in GDScript like Godot's " "``print`` function are available in the ``GD`` static class which is part of " @@ -110523,21 +111533,21 @@ msgid "" "and :ref:`@GlobalScope `." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:257 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:258 msgid "" "Keep in mind that the class you wish to attach to your node should have the " "same name as the ``.cs`` file. Otherwise, you will get the following error:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:260 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:261 msgid "*\"Cannot find class XXX for script res://XXX.cs\"*" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:265 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:266 msgid "General differences between C# and GDScript" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:267 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:268 msgid "" "The C# API uses ``PascalCase`` instead of ``snake_case`` in GDScript/C++. " "Where possible, fields and getters/setters have been converted to " @@ -110545,11 +111555,11 @@ msgid "" "reasonably possible." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:271 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:272 msgid "For more information, see the :ref:`doc_c_sharp_differences` page." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:275 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:276 msgid "" "You need to (re)build the project assemblies whenever you want to see new " "exported variables or signals in the editor. This build can be manually " @@ -110557,17 +111567,17 @@ msgid "" "editor." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:282 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:283 msgid "" "You will also need to rebuild the project assemblies to apply changes in " "\"tool\" scripts." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:286 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:287 msgid "Current gotchas and known issues" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:288 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:289 msgid "" "As C# support is quite new in Godot, there are some growing pains and things " "that need to be ironed out. Below is a list of the most important issues you " @@ -110576,24 +111586,24 @@ msgid "" "godotengine/godot/labels/topic%3Adotnet>`_." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:294 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:295 msgid "" "Writing editor plugins is possible, but it is currently quite convoluted." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:295 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:296 msgid "" "State is currently not saved and restored when hot-reloading, with the " "exception of exported variables." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:297 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:298 msgid "" "Attached C# scripts should refer to a class that has a class name that " "matches the file name." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:299 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:300 msgid "" "There are some methods such as ``Get()``/``Set()``, ``Call()``/" "``CallDeferred()`` and signal connection method ``Connect()`` that rely on " @@ -110606,24 +111616,24 @@ msgid "" "snake_case naming." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:309 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:310 msgid "" "As of Godot 4.0, exporting .NET projects is supported for desktop platforms " "(Linux, Windows and macOS). Other platforms will gain support in future 4.x " "releases." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:314 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:315 msgid "Common pitfalls" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:316 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:317 msgid "" "You might encounter the following error when trying to modify some values in " "Godot objects, e.g. when trying to change the X coordinate of a ``Node2D``:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:332 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:333 msgid "" "This is perfectly normal. Structs (in this example, a ``Vector2``) in C# are " "copied on assignment, meaning that when you retrieve such an object from a " @@ -110631,37 +111641,37 @@ msgid "" "Modifying said copy without reassigning it afterwards won't achieve anything." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:337 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:338 msgid "" "The workaround is simple: retrieve the entire struct, modify the value you " "want to modify, and reassign the property." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:346 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:347 msgid "" "Since C# 10, it is also possible to use `with expressions `_ on structs, allowing you to do the same thing in a single line." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:353 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:354 msgid "" "You can read more about this error on the `C# language reference `_." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:356 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:357 msgid "Performance of C# in Godot" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:360 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:361 msgid "" "For a performance comparison of the languages Godot supports, " "see :ref:`doc_faq_which_programming_language_is_fastest`." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:363 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:364 msgid "" "Most properties of Godot C# objects that are based on ``GodotObject`` (e.g. " "any ``Node`` like ``Control`` or ``Node3D`` like ``Camera3D``) require " @@ -110670,24 +111680,24 @@ msgid "" "read them multiple times at a single code location:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:399 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:400 msgid "" "Passing raw arrays (such as ``byte[]``) or ``string`` to Godot's C# API " "requires marshalling which is comparatively pricey." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:402 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:403 msgid "" "The implicit conversion from ``string`` to ``NodePath`` or ``StringName`` " "incur both the native interop and marshalling costs as the ``string`` has to " "be marshalled and passed to the respective native constructor." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:406 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:407 msgid "Using NuGet packages in Godot" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:408 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:409 msgid "" "`NuGet `_ packages can be installed and used with " "Godot, as with any C# project. Many IDEs are able to add packages directly. " @@ -110695,35 +111705,35 @@ msgid "" "``.csproj`` file located in the project root:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:422 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:423 msgid "" -"As of Godot 3.2.3, Godot automatically downloads and sets up newly added " -"NuGet packages the next time it builds the project." +"Godot automatically downloads and sets up newly added NuGet packages the " +"next time it builds the project." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:426 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:427 msgid "Profiling your C# code" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:428 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:429 msgid "" "The following tools may be used for performance and memory profiling of your " "managed code:" msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:430 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:431 msgid "JetBrains Rider with dotTrace/dotMemory plugin." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:431 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:432 msgid "Standalone JetBrains dotTrace/dotMemory." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:432 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:433 msgid "Visual Studio." msgstr "" -#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:434 +#: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:435 msgid "" "Profiling managed and unmanaged code at once is possible with both JetBrains " "tools and Visual Studio, but limited to Windows." @@ -114477,7 +115487,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:590 -#: ../../docs/engine_details/architecture/core_types.rst:243 +#: ../../docs/engine_details/architecture/core_types.rst:228 #: ../../docs/engine_details/file_formats/tscn.rst:167 msgid "NodePath" msgstr "" @@ -114594,7 +115604,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:654 -#: ../../docs/engine_details/architecture/core_types.rst:251 +#: ../../docs/engine_details/architecture/core_types.rst:236 msgid "RID" msgstr "" @@ -116563,9 +117573,7 @@ msgid "Color given as red-green-blue value (alpha will always be 1)." msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:308 -msgid "" -"Since Godot 4.0, nodes can be directly exported without having to use " -"NodePaths." +msgid "Nodes can also be directly exported without having to use NodePaths." msgstr "" #: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:315 @@ -117006,7 +118014,9 @@ msgstr "" msgid "" "Generally speaking, if you build a custom version of Godot, you should " "generate an ``extension_api.json`` from it for your GDExtensions, because it " -"may have some differences from official Godot builds." +"may have some differences from official Godot builds. You can learn more " +"about the process of using custom ``extension_api.json`` files in " +"the :ref:`build system section `." msgstr "" #: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:7 @@ -117144,135 +118154,85 @@ msgid "This will initialize the repository in your project folder." msgstr "" #: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:101 -msgid "Building the C++ bindings" -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:103 -msgid "" -"Now that we've downloaded our prerequisites, it is time to build the C++ " -"bindings." -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:106 -msgid "" -"The repository contains a copy of the metadata for the current Godot " -"release, but if you need to build these bindings for a newer version of " -"Godot, call the Godot executable:" -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:114 -msgid "" -"The resulting ``extension_api.json`` file will be created in the " -"executable's directory. Copy it to the project folder and add " -"``custom_api_file=`` to the scons command below." -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:118 -msgid "" -"To generate and compile the bindings, use this command (replacing " -"```` with ``windows``, ``linux`` or ``macos`` depending on your " -"OS):" -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:121 -msgid "" -"The build process automatically detects the number of CPU threads to use for " -"parallel builds. To specify a number of CPU threads to use, add ``-jN`` at " -"the end of the SCons command line where ``N`` is the number of CPU threads " -"to use." -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:131 -msgid "" -"This step will take a while. When it is completed, you should have static " -"libraries that can be compiled into your project stored in ``godot-cpp/bin/" -"``." -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:136 -msgid "You may need to add ``bits=64`` to the command on Windows or Linux." -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:139 msgid "Creating a simple plugin" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:141 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:103 msgid "" "Now it's time to build an actual plugin. We'll start by creating an empty " "Godot project in which we'll place a few files." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:144 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:106 msgid "" "Open Godot and create a new project. For this example, we will place it in a " "folder called ``demo`` inside our GDExtension's folder structure." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:147 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:109 msgid "" "In our demo project, we'll create a scene containing a Node called \"Main\" " "and we'll save it as ``main.tscn``. We'll come back to that later." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:150 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:112 msgid "" "Back in the top-level GDExtension module folder, we're also going to create " "a subfolder called ``src`` in which we'll place our source files." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:153 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:115 msgid "" "You should now have ``demo``, ``godot-cpp``, and ``src`` directories in your " "GDExtension module." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:156 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:118 msgid "Your folder structure should now look like this:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:168 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:130 msgid "" "In the ``src`` folder, we'll start with creating our header file for the " "GDExtension node we'll be creating. We will name it ``gdexample.h``:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:171 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:133 msgid "gdextension_cpp_example/src/gdexample.h" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:198 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:160 msgid "" "There are a few things of note to the above. We include ``sprite2d.hpp`` " "which contains bindings to the Sprite2D class. We'll be extending this class " "in our module." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:202 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:164 msgid "" "We're using the namespace ``godot``, since everything in GDExtension is " "defined within this namespace." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:205 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:167 msgid "" "Then we have our class definition, which inherits from our Sprite2D through " "a container class. We'll see a few side effects of this later on. The " "``GDCLASS`` macro sets up a few internal things for us." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:209 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:171 msgid "After that, we declare a single member variable called ``time_passed``." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:211 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:173 msgid "" "In the next block we're defining our methods, we have our constructor and " "destructor defined, but there are two other functions that will likely look " "familiar to some, and one new method." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:215 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:177 msgid "" "The first is ``_bind_methods``, which is a static function that Godot will " "call to find out which methods can be called and which properties it " @@ -117280,28 +118240,28 @@ msgid "" "the same as the ``_process`` function you're used to in GDScript." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:220 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:182 msgid "Let's implement our functions by creating our ``gdexample.cpp`` file:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:222 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:184 msgid "gdextension_cpp_example/src/gdexample.cpp" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:250 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:212 msgid "" "This one should be straightforward. We're implementing each method of our " "class that we defined in our header file." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:253 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:215 msgid "" "Note our ``_process`` function, which keeps track of how much time has " "passed and calculates a new position for our sprite using a sine and cosine " "function." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:256 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:218 msgid "" "There is one more C++ file we need; we'll name it ``register_types.cpp``. " "Our GDExtension plugin can contain multiple classes, each with their own " @@ -117310,11 +118270,11 @@ msgid "" "our GDExtension plugin." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:262 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:224 msgid "gdextension_cpp_example/src/register_types.cpp" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:302 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:264 msgid "" "The ``initialize_example_module`` and ``uninitialize_example_module`` " "functions get called respectively when Godot loads our plugin and when it " @@ -117325,7 +118285,7 @@ msgid "" "like the default for GDScript." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:309 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:271 msgid "" "The important function is the third function called " "``example_library_init``. We first call a function in our bindings library " @@ -117334,21 +118294,21 @@ msgid "" "sets the level of initialization (core, servers, scene, editor, level)." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:314 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:276 msgid "" "At last, we need the header file for the ``register_types.cpp`` named " "``register_types.h``." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:317 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:279 msgid "gdextension_cpp_example/src/register_types.h" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:330 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:292 msgid "Compiling the plugin" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:332 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:294 msgid "" "To compile the project we need to define how SCons using should compile it " "using an ``SConstruct`` file which references the one in ``godot-cpp``. " @@ -117358,54 +118318,48 @@ msgid "" "use these build files in a subsequent tutorial." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:341 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:303 msgid "" "This ``SConstruct`` file was written to be used with the latest ``godot-" "cpp`` master, you may need to make small changes using it with older " "versions or refer to the ``SConstruct`` file in the Godot 4.x documentation." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:345 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:307 msgid "" "Once you've downloaded the ``SConstruct`` file, place it in your GDExtension " "folder structure alongside ``godot-cpp``, ``src`` and ``demo``, then run:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:352 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:314 msgid "You should now be able to find the module in ``demo/bin/``." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:354 -msgid "" -"When building for iOS, package the module as a static `.xcframework`, you " -"can use following commands to do so:" -msgstr "" - -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:369 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:318 msgid "" "Here, we've compiled both godot-cpp and our gdexample library as debug " "builds. For optimized builds, you should compile them using the " "``target=template_release`` switch." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:374 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:323 msgid "Using the GDExtension module" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:376 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:325 msgid "" "Before we jump back into Godot, we need to create one more file in ``demo/" "bin/``." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:379 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:328 msgid "" "This file lets Godot know what dynamic libraries should be loaded for each " "platform and the entry function for the module. It is called " "``gdexample.gdextension``." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:419 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:354 msgid "" "This file contains a ``configuration`` section that controls the entry " "function of the module. You should also set the minimum compatible Godot " @@ -117416,7 +118370,7 @@ msgid "" "your extension in debug mode (default)." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:425 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:360 msgid "" "The ``libraries`` section is the important bit: it tells Godot the location " "of the dynamic library in the project's filesystem for each supported " @@ -117425,39 +118379,37 @@ msgid "" "are incompatible with the target platform." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:431 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:366 msgid "" -"Finally, the ``dependencies`` section allows you to name additional dynamic " -"libraries that should be included as well. This is important when your " -"GDExtension plugin implements someone else's library and requires you to " -"supply a third-party dynamic library with your project." +"You can learn more about ``.gdextension`` files " +"at :ref:`doc_gdextension_file`." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:436 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:368 msgid "Here is another overview to check the correct file structure:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:459 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:391 msgid "" "Time to jump back into Godot. We load up the main scene we created way back " "in the beginning and now add a newly available GDExample node to the scene:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:464 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:396 msgid "" "We're going to assign the Godot logo to this node as our texture, disable " "the ``centered`` property:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:469 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:401 msgid "We're finally ready to run the project:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:479 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:411 msgid "Adding properties" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:481 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:413 msgid "" "GDScript allows you to add properties to your script using the ``export`` " "keyword. In GDExtension you have to register the properties with a getter " @@ -117466,25 +118418,25 @@ msgid "" "scope of this tutorial)." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:487 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:419 msgid "" "Lets add a property that allows us to control the amplitude of our wave." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:489 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:421 msgid "" "In our ``gdexample.h`` file we need to add a member variable and getter and " "setter functions:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:504 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:436 msgid "" "In our ``gdexample.cpp`` file we need to make a number of changes, we will " "only show the methods we end up changing, don't remove the lines we're " "omitting:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:541 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:473 msgid "" "Once you compile the module with these changes in place, you will see that a " "property has been added to our interface. You can now change this property " @@ -117492,21 +118444,21 @@ msgid "" "along a larger figure." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:546 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:478 msgid "" "Let's do the same but for the speed of our animation and use a setter and " "getter function. Our ``gdexample.h`` header file again only needs a few more " "lines of code:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:561 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:493 msgid "" "This requires a few more changes to our ``gdexample.cpp`` file, again we're " "only showing the methods that have changed so don't remove anything we're " "omitting:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:601 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:533 msgid "" "Now when the project is compiled, we'll see another property called speed. " "Changing its value will make the animation go faster or slower. Furthermore, " @@ -117515,14 +118467,14 @@ msgid "" "the step size." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:608 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:540 msgid "" "For simplicity, we've only used the hint_range of the property method. There " "are a lot more options to choose from. These can be used to further " "configure how properties are displayed and set on the Godot side." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:615 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:547 msgid "" "Last but not least, signals fully work in GDExtension as well. Having your " "extension react to a signal given out by another object requires you to call " @@ -117530,11 +118482,11 @@ msgid "" "wobbling Godot icon, we would need to showcase a far more complete example." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:620 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:552 msgid "This is the required syntax:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:626 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:558 msgid "" "To connect our signal ``the_signal`` from some other node with our method " "``my_method``, we need to provide the ``connect`` method with the name of " @@ -117546,20 +118498,20 @@ msgid "" "method of which object it needs to call." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:634 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:566 msgid "" "Note that you can only call ``my_method`` if you've previously registered it " "in your ``_bind_methods`` method. Otherwise Godot will not know about the " "existence of ``my_method``." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:638 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:570 msgid "" "To learn more about ``Callable``, check out the class reference " "here: :ref:`Callable `." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:640 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:572 msgid "" "Having your object sending out signals is more common. For our wobbling " "Godot icon, we'll do something silly just to show how it works. We're going " @@ -117567,26 +118519,26 @@ msgid "" "along." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:644 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:576 msgid "" "In our ``gdexample.h`` header file, we need to define a new member " "``time_emit``:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:654 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:586 msgid "" "This time, the changes in ``gdexample.cpp`` are more elaborate. First, " "you'll need to set ``time_emit = 0.0;`` in either our ``_init`` method or in " "our constructor. We'll look at the other 2 needed changes one by one." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:658 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:590 msgid "" "In our ``_bind_methods`` method, we need to declare our signal. This is done " "as follows:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:670 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:602 msgid "" "Here, our ``ADD_SIGNAL`` macro can be a single call with a ``MethodInfo`` " "argument. ``MethodInfo``'s first parameter will be the signal's name, and " @@ -117596,7 +118548,7 @@ msgid "" "parameter will have by default." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:676 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:608 msgid "" "So here, we add a signal, with a ``MethodInfo`` which names the signal " "\"position_changed\". The ``PropertyInfo`` parameters describe two essential " @@ -117604,17 +118556,17 @@ msgid "" "respectively named \"node\" and \"new_pos\"." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:680 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:612 msgid "Next, we'll need to change our ``_process`` method:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:702 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:634 msgid "" "After a second has passed, we emit our signal and reset our counter. We can " "add our parameter values directly to ``emit_signal``." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:705 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:637 msgid "" "Once the GDExtension library is compiled, we can go into Godot and select " "our sprite node. In the **Node** dock, we can find our new signal and link " @@ -117622,17 +118574,17 @@ msgid "" "We've added a script on our main node and implemented our signal like this:" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:717 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:649 msgid "Every second, we output our position to the console." msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:722 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:654 msgid "" "We hope the above example showed you the basics. You can build upon this " "example to create full-fledged scripts to control nodes in Godot using C++!" msgstr "" -#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:725 +#: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:657 msgid "" "Instead of basing your project off the above example setup, we recommend to " "restart now by cloning the `godot-cpp template `__" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:33 +msgid "`godot_roguelite `__" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:34 +msgid "" +"`godot-orchestrator `__" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:36 +msgid "" +"Examples for configuring godot-cpp are listed at the bottom of the page, " +"many of which may help with configuring your project." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:40 +msgid "CMake's ``Debug`` vs Godot's ``template_debug``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:42 +msgid "" +"Something that has come up during many discussions is the conflation of a " +"compilation of C++ source code with debug symbols enabled, and compiling a " +"Godot extension with debug features enabled. The two concepts are not " +"mutually exclusive." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:48 +msgid "Debug Features" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:50 +msgid "" +"Enables a pre-processor definition to selectively compile code to help users " +"of a Godot extension with their own project." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:53 +msgid "" +"Debug features are enabled in ``editor`` and ``template_debug`` builds, " +"which can be specified during the configure phase like so:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:63 +msgid "" +"Sets compiler flags so that debug symbols are generated to help godot " +"extension developers debug their extension." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:66 +msgid "" +"``Debug`` is the default build type for CMake projects, the way to select " +"another depends on the generator used:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:69 +msgid "" +"For single configuration generators, add ``-DCMAKE_BUILD_TYPE=`` to " +"the configure command." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:71 +msgid "" +"For multi-config generators, add ``--config `` to the build command." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:73 +msgid "" +"Where ```` is one of ``Debug``, ``Release``, ``RelWithDebInfo``, and " +"``MinSizeRel``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:77 +msgid "SCons Deviations" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:79 +msgid "" +"Not all code from the SCons system can be perfectly represented in CMake, " +"here are the notable differences:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:82 +msgid "``debug_symbols``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:84 +msgid "" +"Is no longer an explicit option, and is enabled when using CMake build " +"configurations; ``Debug``, ``RelWithDebInfo``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:87 +msgid "``dev_build``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:89 +msgid "" +"Does not define ``NDEBUG`` when disabled, ``NDEBUG`` is set when using CMake " +"build configurations; ``Release``, ``MinSizeRel``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:92 +msgid "``arch``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:94 +msgid "" +"CMake sets the architecture via the toolchain files, macOS universal is " +"controlled via the ``CMAKE_OSX_ARCHITECTURES`` property which is copied to " +"targets when they are defined." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:98 +msgid "``debug_crt``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:100 +msgid "" +"CMake controls linking to Windows runtime libraries by copying the value of " +"``CMAKE_MSVC_RUNTIME_LIBRARIES`` to targets as they are defined. godot-cpp " +"will set this variable if it isn't already set. So, include it before other " +"dependencies to have the value propagate across the projects." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:106 +msgid "Basic Walk-Through" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:109 +msgid "Clone the git repository" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:118 +msgid "Configure the build" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:124 +msgid "``-S`` Specifies the source directory as ``godot-cpp``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:125 +msgid "``-B`` Specifies the build directory as ``cmake-build``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:126 +msgid "``-G`` Specifies the Generator as ``Ninja``" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:128 +msgid "" +"The source directory in this example is the source root for the freshly " +"cloned godot-cpp. CMake will also interpret the first path in the command as " +"the source path, or if an existing build path is specified it will deduce " +"the source path from the build cache." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:133 +msgid "The following three commands are equivalent:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:146 +msgid "" +"The build directory is specified so that generated files do not clutter the " +"source tree with build artifacts." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:149 +msgid "" +"CMake doesn't build the code, it generates the files that a build tool uses, " +"in this case the ``Ninja`` generator creates Ninja_ build files." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:152 +msgid "To see the list of generators run ``cmake --help``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:157 +msgid "Build Options" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:159 +msgid "" +"To list the available options use the ``-L[AH]`` command flags. ``A`` is for " +"advanced, and ``H`` is for help strings:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:166 +msgid "" +"Options are specified on the command line when configuring, for example:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:174 +msgid "" +"See setting-build-variables_ and build-configurations_ for more information." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:180 +msgid "A non-exhaustive list of options:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:205 +msgid "" +"Tell CMake to invoke the build system it generated in the specified " +"directory. The default target is ``template_debug`` and the default build " +"configuration is Debug." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:216 +msgid "" +"These examples, while intended for godot-cpp developers, package " +"maintainers, and CI/CD may help you configure your own extension project." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:219 +msgid "" +"Practical examples for how to consume the godot-cpp library as part of an " +"extension project are listed in the `Introduction`_." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:223 +msgid "Enabling Integration Testing" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:225 +msgid "" +"The testing target ``godot-cpp-test`` is guarded by " +"``GODOTCPP_ENABLE_TESTING`` which is off by default." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:228 +msgid "" +"To configure and build the godot-cpp project to enable the integration " +"testing targets the command will look something like:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:237 +msgid "Windows and MSVC - Release" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:239 +msgid "" +"So long as CMake is installed from the `CMake Downloads`_ page and in the " +"PATH, and Microsoft Visual Studio is installed with C++ support, CMake will " +"detect the MSVC compiler." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:243 +msgid "" +"Note that Visual Studio is a Multi-Config Generator so the build " +"configuration needs to be specified at build time, for example, ``--config " +"Release``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:254 +msgid "MSys2/clang64, \"Ninja\" - Debug" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:256 +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:272 +msgid "Assumes the ``ming-w64-clang-x86_64``-toolchain is installed." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:258 +msgid "" +"Note that Ninja is a Single-Config Generator so the build type needs to be " +"specified at configuration time." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:261 +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:277 +msgid "Using the ``msys2/clang64`` shell:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:270 +msgid "MSys2/clang64, \"Ninja Multi-Config\" - dev_build, Debug Symbols" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:274 +msgid "" +"This time we are choosing the 'Ninja Multi-Config' generator, so the build " +"type is specified at build time." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:286 +msgid "Emscripten for web platform" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:288 +msgid "" +"This has only been tested on Windows so far. You can use this example " +"workflow:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:290 +msgid "Clone and install the latest Emscripten tools to ``c:\\emsdk``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:291 +msgid "" +"Use ``C:\\emsdk\\emsdk.ps1 activate latest`` to enable the environment from " +"powershell in the current shell." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:293 +msgid "" +"The ``emcmake.bat`` utility adds the emscripten toolchain to the CMake " +"command. It can also be added manually; the location is listed inside the " +"``emcmake.bat`` file" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:304 +msgid "Android Cross Compile from Windows" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:306 +msgid "" +"There are two separate paths you can choose when configuring for android." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:308 +msgid "" +"Use the ``CMAKE_ANDROID_*`` variables specified on the command line or in " +"your own toolchain file as listed in the cmake-toolchains_ documentation." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:313 +msgid "" +"Or use the toolchain and scripts provided by the Android SDK and make " +"changes using the ``ANDROID_*`` variables listed there. Where ```` " +"is whatever NDK version you have installed (tested with `28.1.13356709`) and " +"```` is for the Android sdk platform, (tested with ``android-29``)." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:320 +msgid "" +"The Android SDK website_ explicitly states that they do not support using " +"the CMake built-in method, and recommends you stick with their toolchain " +"files." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:327 +msgid "Using your own toolchain file" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:329 +msgid "As described in the CMake documentation:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:336 +msgid "Doing the equivalent just using the command line:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:348 +msgid "Using the Android SDK toolchain file" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:350 +msgid "This defaults to the minimum supported version and armv7-a:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:358 +msgid "Specifying the Android platform and ABI:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:4 +msgid "Main build system: Working with SCons" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:9 +msgid "" +"`godot-cpp `__ uses `SCons " +"`__ as its main build system. It is modeled " +"after :ref:`Godot's build system `, and some commands " +"available there are also available in godot-cpp projects." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:16 +msgid "" +"To build a godot-cpp project, it is generally sufficient to install `SCons " +"`__, and simply run it in the project directory:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:19 +msgid "scons" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:21 +msgid "You may want to learn about available options:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:23 +msgid "scons --help" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:25 +msgid "" +"To cleanly re-build your project, add ``--clean`` to your build command:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:27 +msgid "scons --clean" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:29 +msgid "" +"You can find more information about common SCons arguments and build " +"patterns in the `SCons User Guide `__. Additional commands may be added by individual godot-" +"cpp projects, so consult their specific documentation for more information " +"on those." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:34 +#: ../../docs/engine_details/development/configuring_an_ide/index.rst:6 +msgid "Configuring an IDE" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:36 +msgid "" +"Most IDEs can use a ``compile_commands.json`` file to understand a C++ " +"project. You can generate it with godot-cpp using the following command:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:47 +msgid "" +"For more information, please check out the :ref:`IDE configuration guides " +"`. Although written for Godot engine contributors, " +"they are largely applicable to godot-cpp projects as well." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:51 +msgid "Loading your GDExtension in Godot" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:53 +msgid "" +"Godot loads GDExtensions by finding :ref:`.gdextension " +"` files in the project directory. ``.gdextension`` " +"files are used to select and load a binary compatible with the current " +"computer / operating system." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:56 +msgid "" +"The `godot-cpp-template `__, as well as the :ref:`Getting Started section " +"`, provide example ``.gdextension`` files for " +"GDExtensions that are widely compatible to many different systems." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:61 +msgid "Building for multiple platforms" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:63 +msgid "" +"GDExtensions are expected to run on many different systems, each with " +"separate binaries and build configurations. If you are planning to publish " +"your GDExtension, we recommend you provide binaries for all configurations " +"that are mentioned in the `godot-cpp-template `__ `.gdextension file `__." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:68 +msgid "" +"There are two popular ways by which cross platform builds can be achieved:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:70 +msgid "Cross-platform build tools" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:71 +msgid "Continuous Integration (CI)" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:73 +msgid "" +"`godot-cpp-template `__ " +"contains an `example setup `__ for a GitHub based CI workflow." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:78 +msgid "Using a custom API file" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:80 +msgid "" +"Every branch of godot-cpp comes with an API file (``extension_api.json``) " +"appropriate for the respective Godot version (e.g. the ``4.3`` branch comes " +"with the API file compatible with Godot version ``4.3`` and later)." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:84 +msgid "" +"However, you may want to use a custom ``extension_api.json``, for example:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:86 +msgid "If you want to use the latest APIs from Godot ``master``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:87 +msgid "" +"If you :ref:`build Godot yourself ` with different " +"options than the official builds (e.g. ``disable_3d=yes`` or " +"``precision=double``)." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:88 +msgid "If you want to use APIs exposed by custom modules." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:90 +msgid "" +"To use a custom API file, you first have to generate it from the appropriate " +"Godot executable:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:97 +msgid "" +"The resulting ``extension_api.json`` file will be created in the " +"executable's directory. To use it, you can add ``custom_api_file`` to your " +"build command:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:104 +msgid "" +"Alternatively, you can add it as the default API file to your project by " +"adding the following line to your SConstruct file:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:4 +msgid "Core functions and types" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:6 +msgid "" +"godot-cpp's API is designed to be as similar as possible to Godot's internal " +"API." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:8 +msgid "" +"This means that, in general, you can use the :ref:`Engine details " +"` section to learn how to work with godot-cpp. In " +"addition, it can often be useful to browse the `engine's code `__ for examples for how to work with Godot's " +"API." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:12 +msgid "" +"That being said, there are some differences to be aware of, which are " +"documented here." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:15 +msgid "Common functions and macros" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:17 +msgid "" +"Please refer to :ref:`doc_common_engine_methods_and_macros` for information " +"on this. The functions and macros documented there are also available in " +"godot-cpp." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:21 +#: ../../docs/engine_details/architecture/core_types.rst:4 +msgid "Core types" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:23 +msgid "" +"Godot's :ref:`Core types ` are also available in godot-cpp, " +"and the same recommendations apply as described in that article. The types " +"are regularly synchronized with the Godot codebase." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:26 +msgid "" +"In your own code, you can also use `C++ STL types `__, or types from any library you " +"choose, but they won't be compatible with Godot's APIs." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:32 +msgid "" +"While in Godot, the ``Packed*Array`` types are aliases of ``Vector``, in " +"godot-cpp, they're their own types, using the Godot bindings. This is " +"because ``Packed*Array`` are exposed to Godot and limited to only Godot " +"types, whereas ``Vector`` can hold any C++ type which Godot might not be " +"able to understand." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:36 +msgid "" +"In general, the ``Packed*Array`` types work the same way as their ``Vector`` " +"aliases, however, there are some notable differences." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:40 +msgid "Data access" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:42 +msgid "" +"``Vector`` keeps its data entirely within the GDExtension, whereas the " +"``Packed*Array`` types keep their data on the Godot side. This means that " +"any time a ``Packed*Array`` is accessed, it needs to call into Godot." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:45 +msgid "" +"To efficiently read or write a large amount of data into a ``Packed*Array``, " +"you should call ``.ptr()`` (for reading) or ``.ptrw()`` (for writing) to get " +"a pointer directly to the array's memory:" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:72 +msgid "Copying" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:74 +msgid "" +"``Variant`` wrappers for ``Packed*Array`` treat them as pass-by-reference, " +"while the ``Packed*Array`` types themselves are pass-by-value (implemented " +"as copy-on-write)." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:77 +msgid "" +"In addition, it may be of interest that GDScript calls use the ``Variant`` " +"call interface: Any ``Packed*Array`` arguments to your functions will be " +"passed in a ``Variant``, and unpacked from there. This can create copies of " +"the types, so the argument you receive may be a copy of the argument that " +"the function was called with. In practice, this means you cannot rely on " +"that the argument passed to you can be modified at the caller's site." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:83 +#: ../../docs/engine_details/architecture/variant_class.rst:4 +msgid "Variant class" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:85 +msgid "" +"Please refer to :ref:`doc_variant_class` to learn about how to work with " +"``Variant``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:87 +msgid "" +"Most importantly, you should be aware that all functions exposed through the " +"GDExtension API must be compatible with ``Variant``." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:91 +#: ../../docs/engine_details/architecture/object_class.rst:4 +msgid "Object class" +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:93 +msgid "" +"Please refer to :ref:`doc_object_class` to learn how to register and work " +"with your own ``Object`` types." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:95 +msgid "" +"We are not aware of any major differences between the godot-cpp ``Object`` " +"API and Godot's internal ``Object`` API, except that some methods are " +"available in Godot's internal API that are not available in godot-cpp." +msgstr "" + +#: ../../docs/tutorials/scripting/cpp/core_types.rst:98 +msgid "" +"You should be aware that the pointer to your godot-cpp ``Object`` is " +"different from the pointer that Godot uses internally. This is because the " +"godot-cpp version is an extension instance, allocated separately from the " +"original ``Object``. However, in practice, this difference is usually not " +"noticeable." +msgstr "" + #: ../../docs/tutorials/scripting/cpp/gdextension_docs_system.rst:4 msgid "Adding documentation" msgstr "" @@ -118289,142 +119975,165 @@ msgstr "" #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:69 msgid "" +"Paths can be relative or absolute (starting with ``res://``). Relative paths " +"are recommended, as they allow the extension to keep working if it's " +"installed to a different folder than what's specified in the path." +msgstr "" + +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:73 +msgid "" "Entries are matched in order, so if two sets of feature tags could match the " "same system, be sure to put the more specific ones first:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:79 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:83 msgid "" "Here are lists of some of the available built-in options (for more look at " "the :ref:`feature tags `):" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:82 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:86 msgid "Running system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:85 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:108 -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:121 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:89 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:112 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:125 msgid "Flag" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:87 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:91 msgid "Windows operating system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:89 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:93 msgid "Mac operating system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:91 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:95 msgid "Linux operating system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:93 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:97 msgid "BSD operating system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:95 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:99 msgid "Linux or BSD operating system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:97 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:101 msgid "Android operating system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:99 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:103 msgid "iOS operating system" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:101 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:105 msgid "Web browser" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:105 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:109 msgid "Build" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:110 -msgid "Build with debug symbols" -msgstr "" - -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:112 -msgid "Optimized build without debug symbols" -msgstr "" - #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:114 -msgid "Editor build" +msgid "" +"Build with debugging features (editor builds always have debugging features)" +msgstr "" + +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:116 +msgid "Optimized build without debugging features" msgstr "" #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:118 +msgid "Editor build" +msgstr "" + +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:122 #: ../../docs/engine_details/development/compiling/introduction_to_the_buildsystem.rst:268 msgid "Architecture" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:123 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:127 msgid "double-precision build" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:125 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:129 msgid "single-precision build" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:127 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:131 msgid "64-bit x86 build" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:129 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:133 msgid "64-bit ARM build" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:131 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:135 msgid "64-bit RISC-V build" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:133 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:137 msgid "RISC-V build (any bitness)" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:135 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:139 msgid "32-bit WebAssembly build" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:139 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:143 msgid "Icons section" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:141 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:145 msgid "" "By default, Godot uses the Node icon in the scene dock for GDExtension " "nodes. A custom icon can be set by reference to its name and resource path " "of an SVG file." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:152 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:156 msgid "" -"The path should point to a 16 by 16 pixel SVG image. Read the guide " -"for :ref:`creating icons ` for more information." +"The path should point to a 16×16 pixel SVG image, with two options enabled " +"on the image in the Import dock:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:156 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:159 +msgid "**Editor > Scale with Editor Scale**." +msgstr "" + +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:160 +msgid "**Editor > Convert Colors with Editor Theme**." +msgstr "" + +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:162 +msgid "" +"Enabling both options ensures the icon behaves as closely as possible to the " +"stock editor icons. Read the guide for :ref:`creating icons " +"` for more information." +msgstr "" + +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:167 msgid "Dependencies section" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:158 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:169 msgid "" -"In this section you set the paths of the GDExtension dependencies. This is " +"In this section, you set the paths of the GDExtension dependencies. This is " "used internally to export the dependencies when exporting your game " "executable. You are able to set which dependency is loaded depending on the " "feature flags of the exported executable. In addition, you are able to set " "an optional subdirectory to move your dependencies into. If no path is " -"supplied Godot will move the libraries into the same directory as your game " +"supplied, Godot will move the libraries into the same directory as your game " "executable." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:164 +#: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:176 msgid "" -"In MacOS it is necessary to have shared libraries inside a folder called " +"On macOS, it is necessary to have shared libraries inside a folder called " "``Frameworks`` with a directory structure like this: ``Game.app/Contents/" "Frameworks``." msgstr "" @@ -118697,7 +120406,7 @@ msgid "" "file in the ``src`` folder, adding the following code:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:363 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:367 msgid "" "The first important thing here is ``p_get_proc_address``. This a function " "from the GDExtension API that is passed during initialization. You can use " @@ -118706,7 +120415,7 @@ msgid "" "``p_get_proc_address`` everywhere and use our wrapper instead." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:369 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:373 msgid "" "At the start we request the ``variant_get_ptr_destructor()`` function. This " "is not going to be used outside of this function, so we don't add to our " @@ -118714,14 +120423,14 @@ msgid "" "warnings." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:373 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:377 msgid "" "Then we get the function that creates a StringName from a C string, exactly " "what we mentioned before as a needed function. We store that in our " "``constructors`` struct." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:377 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:381 msgid "" "Next, we use the ``variant_get_ptr_destructor()`` function we just got to " "query for the destructor for StringName, using the enum value from " @@ -118730,13 +120439,13 @@ msgid "" "for the example." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:383 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:387 msgid "" "Lastly, we get the ``classdb_register_extension_class2()`` function, which " "we'll need in order to register our custom class." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:387 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:391 msgid "" "You may wonder why the ``2`` is there in the function name. This means it's " "the second version of this function. The old version is kept to ensure " @@ -118745,38 +120454,38 @@ msgid "" "support older Godot versions in this example." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:393 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:397 msgid "" "The ``gdextension_interface.h`` header documents in which Godot version each " "function was introduced." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:396 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:400 msgid "" "We also define the ``class_library`` variable here, which will be set during " "initialization." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:399 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:403 msgid "" "Speaking of initialization, now we have to change the ``init.c`` file in " "order to fill the things we just added:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:411 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:415 msgid "" "Here we set the ``class_library`` as needed and call our new ``load_api()`` " "function. Don't forget to also include the new headers at the top of this " "file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:422 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:426 msgid "" "Since we are here, we can register our new custom class. Let's fill the " "``initialize_gdexample_module()`` function:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:475 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:479 msgid "" "The struct with the class information is the biggest thing here. None of its " "fields are required with the exception of ``create_instance_func`` and " @@ -118786,14 +120495,14 @@ msgid "" "each level, but we only want to register our class once." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:482 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:486 msgid "" "The other undefined thing here is ``StringName``. This will be an opaque " "struct meant to hold the data of a Godot StringName in our extension. We'll " "define it in the appropriately named ``defs.h`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:505 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:507 msgid "" "As mentioned in the comment, the sizes can be found in the " "``extension_api.json`` file that we generated earlier, under the " @@ -118803,13 +120512,13 @@ msgid "" "file." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:511 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:513 msgid "" "The ``// Types.`` comment foreshadows that we'll be adding more types to " "this file. Let's leave that for later." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:514 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:516 msgid "" "The ``StringName`` struct here is just to hold Godot data, so we don't " "really care what is inside of it. Though, in this case, it is just a pointer " @@ -118817,13 +120526,13 @@ msgid "" "for a StringName ourselves, like we are doing when registering our class." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:519 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:521 msgid "" "Back to registering, we need to work on our create and free functions. Let's " "include them in ``gdexample.h`` since they're specific to the custom class:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:531 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:533 msgid "" "Before we can implement those function, we'll need a few more things in our " "API. We need a way to allocate and free memory. While we could do this with " @@ -118832,23 +120541,23 @@ msgid "" "our custom instance." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:537 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:539 msgid "So let's change the ``api.h`` to include these new functions:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:552 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:554 msgid "" "Then we change the ``load_api()`` function in ``api.c`` to grab these new " "functions:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:569 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:571 msgid "" "Now we can go back to ``gdexample.c`` and define the new functions, without " "forgetting to include the ``api.h`` header:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:619 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:621 msgid "" "When instantiating an object, first we create a new Sprite2D object, since " "that's the parent of our class. Then we allocate memory for our custom " @@ -118856,18 +120565,18 @@ msgid "" "the struct as well like we mentioned earlier." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:624 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:626 msgid "" "Then we set our custom struct as the instance data. This will make Godot " "know that the object is an instance of our custom class and properly call " "our custom methods for instance, as well as passing this data back." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:628 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:630 msgid "Note that we return the Godot object we created, not our custom struct." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:630 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:632 msgid "" "For the ``gdextension_free_instance()`` function, we only call the " "destructor and free the memory we allocated for the custom data. It is not " @@ -118875,11 +120584,11 @@ msgid "" "the engine itself." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:635 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:637 msgid "A demo project" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:637 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:639 msgid "" "Now that we can create and free our custom object, we should be able to try " "it out in an actual project. For this, you need to open Godot and create a " @@ -118888,7 +120597,7 @@ msgid "" "ignore this warning this time." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:643 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:645 msgid "" "If you didn't compile the extension yet, it is the time to do it now. To do " "that, open a terminal or command prompt, navigate to the root folder of the " @@ -118896,21 +120605,21 @@ msgid "" "is very simple." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:648 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:650 msgid "" "Then, create a file called ``gdexample.gdextension`` inside the ``demo`` " "folder. This is a Godot resource that describes the extension, allowing the " "engine to properly load it. Put the following content in this file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:664 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:666 msgid "" "As you can see, ``gdexample_library_init()`` is the same name of the " "function we defined in our ``init.c`` file. It is important that the names " "match because it is how Godot calls the entry point of the extension." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:668 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:670 msgid "" "We also set the compatibility minimum to 4.2, since we are targeting this " "version. It should still work on later versions. If you are using a later " @@ -118920,7 +120629,7 @@ msgid "" "information." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:674 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:676 msgid "" "In the ``[libraries]`` section we set up the paths to the shared library on " "different platforms. Here there's only the debug versions since that's what " @@ -118930,13 +120639,13 @@ msgid "" "binaries." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:680 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:682 msgid "" "You can also add library dependencies and custom icons for your classes in " "this file, but this is out of the scope for this tutorial." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:683 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:685 msgid "" "After saving the file, go back to the editor. Godot should automatically " "load the extension. Nothing will be seen because our extension only " @@ -118948,7 +120657,7 @@ msgid "" "restarting the editor and retrace the steps to see if anything went missing." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:692 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:694 msgid "" "Our custom class is derived from ``Sprite2D``, so it has a **Texture** " "property in the Inspector. Set this to the ``icon.svg`` file that Godot " @@ -118957,25 +120666,25 @@ msgid "" "convenience." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:699 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:701 msgid "" "Voilà! We have a custom node running in Godot. However, it does not do " "anything and has nothing different than a regular ``Sprite2D`` node. We will " "fix that next by adding custom methods and properties." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:704 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:706 msgid "Custom methods" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:706 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:708 msgid "" "A common thing in extensions is creating methods for the custom classes and " "exposing those to the Godot API. We are going to create a couple of getters " "and setters which are need for binding the properties afterwards." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:710 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:712 msgid "" "First, let's add the new fields in our struct to hold the values for " "``amplitude`` and ``speed``, which we will use later on when creating the " @@ -118983,26 +120692,26 @@ msgid "" "``GDExample`` struct:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:731 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:733 msgid "" "In the same file, add the declaration for the getters and setters, right " "after the destructor." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:749 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:751 msgid "" "In the ``gdexample.c`` file, we will initialize these values in the " "constructor and add the implementations for those new functions, which are " "quite trivial:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:780 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:782 msgid "" "To make those simple functions work when called by Godot, we will need some " "wrappers to help us properly convert the data to and from the engine." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:783 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:785 msgid "" "First, we will create wrappers for ``ptrcall``. This is what Godot uses when " "the types of the values are known to be exact, which avoids using Variant. " @@ -119011,11 +120720,11 @@ msgid "" "take a single ``double`` argument and return nothing (for the setters)." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:789 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:791 msgid "Add the declarations to the ``api.h`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:797 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:799 msgid "" "Those two functions follow the ``GDExtensionClassMethodPtrCall`` type, as " "defined in the ``gdextension_interface.h``. We use ``float`` as a name here " @@ -119023,11 +120732,11 @@ msgid "" "convention." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:802 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:804 msgid "Then we implement those functions in the ``api.c`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:820 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:822 msgid "" "The ``method_userdata`` argument is a custom value that we give to Godot, in " "this case we will set as the function pointer for the one we want to call. " @@ -119035,13 +120744,13 @@ msgid "" "the arguments when needed, or setting the return value." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:825 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:827 msgid "" "The ``p_instance`` argument contains the custom instance of our class, which " "we gave with ``object_set_instance()`` when creating the object." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:828 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:830 msgid "" "``p_args`` is an array of arguments. Note this contains **pointers** to the " "values. That's why we dereference it when passing to our functions. The " @@ -119049,14 +120758,14 @@ msgid "" "will do soon) and it will always include default ones if those exist." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:833 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:835 msgid "" "Finally, the ``r_ret`` is a pointer to the variable where the return value " "needs to be set. Like the arguments, it will be the correct type as " "declared. For the function that does not return, we have to avoid setting it." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:837 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:839 msgid "" "Note how the type and argument counts are exact, so if we needed different " "types, for example, we would have to create more wrappers. This could be " @@ -119064,7 +120773,7 @@ msgid "" "tutorial." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:842 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:844 msgid "" "While the ``ptrcall`` functions are used when types are exact, sometimes " "Godot cannot know if that's the case (when the call comes from a dynamically " @@ -119072,11 +120781,11 @@ msgid "" "``call`` functions, so we need to provide those as well when binding." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:847 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:849 msgid "Let's create two new wrappers in the ``api.h`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:854 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:856 msgid "" "These follow the ``GDExtensionClassMethodCall`` type, which is a bit " "different. First, you receive pointers to Variants instead of exact types. " @@ -119084,14 +120793,14 @@ msgid "" "something goes wrong." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:859 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:861 msgid "" "In order to check the type and also extract interact with Variant, we will " "need a few more functions from the GDExtension API. So let's expand our " "wrapper structs:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:879 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:881 msgid "" "The names say all about what those do. We have a couple of constructors to " "create and extract a floating point value to and from a Variant. We also " @@ -119099,19 +120808,19 @@ msgid "" "function to find out the type of a Variant." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:884 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:886 msgid "" "Let's get those from the API, like we did before, by changing the " "``load_api()`` function in the ``api.c`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:907 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:909 msgid "" "Now that we have these set, we can implement our call wrappers in the same " "file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:963 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:965 msgid "" "These functions are a bit longer but easy to follow. First they check if the " "argument count is as expected and if not they set the error struct and " @@ -119120,7 +120829,7 @@ msgid "" "from Variant can cause crashes." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:969 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:971 msgid "" "Then it proceeds to extract the argument using the constructor we setup " "before. The one with no arguments instead sets the return value after " @@ -119128,7 +120837,7 @@ msgid "" "since this is what those constructors expect." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:974 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:976 msgid "" "Before we can actually bind our methods, we need a way to create " "``GDExtensionPropertyInfo`` instances. While we could do them inside the " @@ -119137,11 +120846,11 @@ msgid "" "properties." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:979 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:981 msgid "Let's create these two functions in the ``api.h`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:998 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1000 msgid "" "The first one is a simplified version of the second since we usually don't " "need all the arguments for the property and are okay with the defaults. Then " @@ -119149,26 +120858,26 @@ msgid "" "Strings and StringNames that need to be properly disposed of." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1003 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1005 msgid "" "Speaking of which, we also need a way to create and destruct Strings, so " "we'll make an addition to existing structs in this same file. We'll also get " "a new API function for actually binding our custom method." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1027 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1029 msgid "" "Before implementing those, let's do a quick stop in the ``defs.h`` file and " "include the size of the ``String`` type and a couple of enums:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1063 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1065 msgid "" "While it's the same size as ``StringName``, it is more clear to use a " "different name for it." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1066 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1068 msgid "" "The enums here are just helpers to give names to the numbers they represent. " "The information about them is present in the ``extension_api.json`` file. " @@ -119176,19 +120885,19 @@ msgid "" "concise." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1070 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1072 msgid "" "Going now to the ``api.c``, we need to load the pointers to the new " "functions we added to the API." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1091 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1093 msgid "" "Then we can also implement the functions to create the ``PropertyInfo`` " "struct." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1142 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1144 msgid "" "The simple version of ``make_property()`` just calls the more complete one " "with a some default arguments. What those values mean exactly is out of the " @@ -119196,7 +120905,7 @@ msgid "" "` for more details about binding methods and properties." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1147 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1149 msgid "" "The complete version is more involved. First, it creates ``String``'s and " "``StringName``'s for the needed fields, by allocating memory and calling " @@ -119205,23 +120914,23 @@ msgid "" "created struct." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1152 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1154 msgid "" "The ``destruct_property()`` function is straightforward, it simply calls the " "destructors for the created objects and frees their allocated memory." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1155 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1157 msgid "" "Let's go back again to the header ``api.h`` to create the functions that " "will actually bind the methods:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1175 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1177 msgid "Then switch back to the ``api.c`` file to implement these:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1262 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1264 msgid "" "Both functions are very similar. First, they create a ``StringName`` with " "the method name. This is created in the stack since we don't need to keep it " @@ -119230,7 +120939,7 @@ msgid "" "defined earlier." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1267 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1269 msgid "" "In the next step they diverge a bit. The first one creates a property for " "the return value, which has an empty name since it's not needed. The other " @@ -119240,7 +120949,7 @@ msgid "" "bits long instead of the default of 64 bits)." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1274 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1276 msgid "" "Afterwards, they create the ``GDExtensionClassMethodInfo`` with the required " "fields for each case. Then they make a ``StringName`` for the class name, in " @@ -119249,7 +120958,7 @@ msgid "" "objects we created since they aren't needed anymore." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1281 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1283 msgid "" "The bind helpers here use the call helpers we created earlier, so do note " "that those call helpers only accept the Godot ``FLOAT`` type (which is " @@ -119259,14 +120968,14 @@ msgid "" "example from becoming even longer." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1288 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1290 msgid "" "Now that we have the means to bind methods, we can actually do so in our " "custom class. Go to the ``gdexample.c`` file and fill up the " "``gdexample_class_bind_methods()`` function:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1303 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1305 msgid "" "Since this function is already being called by the initialization process, " "we can stop here. This function is much more straightforward after we " @@ -119276,7 +120985,7 @@ msgid "" "the future." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1309 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1311 msgid "" "If you compile the code and reopen the demo project, nothing will be " "different at first, since we only added two new methods. To ensure those are " @@ -119284,37 +120993,37 @@ msgid "" "verify they are present in the documentation page." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1318 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1320 msgid "Custom properties" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1320 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1322 msgid "" "Since we now have the getter and setter for our properties already bound, we " "can move forward to create actual properties that will be displayed in the " "Godot editor inspector." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1324 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1326 msgid "" "Given our extensive setup in the previous section, there are only a few " "things needed to enable us to bind properties. First, let's get a new API " "function in the ``api.h`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1336 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1338 msgid "Let's also declare a function here to bind properties:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1347 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1349 msgid "In the ``api.c`` file, we can load the new API function:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1360 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1362 msgid "Then we can implement our new helper function in this same file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1388 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1390 msgid "" "This function is similar to the one for binding methods. The main difference " "is that we don't need an extra struct since we can simply use the " @@ -119325,24 +121034,24 @@ msgid "" "objects we created." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1396 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1398 msgid "" "With this done, we can extend the ``gdexample_class_bind_methods()`` " "function in the ``gdexample.c`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1412 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1414 msgid "" "If you build the extension with ``scons``, you'll see in the Godot editor " "the new property shown not only on the documentation page for the custom " "class but also in the Inspector dock when the ``GDExample`` node is selected." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1419 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1421 msgid "Binding virtual methods" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1421 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1423 msgid "" "Our custom node now has properties to influence how it operates, but it " "still doesn't do anything. In this section, we will bind the virtual " @@ -119350,13 +121059,13 @@ msgid "" "custom sprite move a little bit." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1426 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1428 msgid "" "In the ``gdexample.h`` file, let's add a function that represents the custom " "``_process()`` method:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1434 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1436 msgid "" "We'll also add a \"private\" field to keep track of the time passed in our " "custom struct. This is \"private\" only in the sense that it won't be bound " @@ -119364,24 +121073,24 @@ msgid "" "lacks access modifiers." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1448 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1450 msgid "" "On the counterpart source file ``gdexample.c`` we need to initialize the new " "field in the constructor:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1460 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1462 msgid "" "Then we can create the simplest implementation for the ``_process`` method:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1469 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1471 msgid "" "For now it will do nothing but update the private field we created. We'll " "come back to this after the method is properly bound." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1472 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1474 msgid "" "Virtual methods are a bit different from the regular bindings. Instead of " "explicitly registering the method itself, we'll register a special function " @@ -119391,34 +121100,34 @@ msgid "" "check if it is equal to a C string." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1479 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1481 msgid "Let's add the declaration to the ``api.h`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1486 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1488 msgid "" "We'll also add a new struct to this file, to hold function pointers for " "custom operators:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1495 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1497 msgid "" "Then in the ``api.c`` file we'll load the function pointer from the API:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1511 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1515 msgid "" "As you can see we need a new local helper here in order to grab the function " "pointer for the operator." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1514 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1518 msgid "" "With this handy, we can easily create our comparison function in the same " "file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1535 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1539 msgid "" "This function creates a ``StringName`` from the argument, compares with the " "other one using the operator function pointer, and returns the result. Note " @@ -119426,13 +121135,13 @@ msgid "" "is a common thing in the API." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1540 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1544 msgid "" "Let's go back to the ``gdexample.h`` file and add a couple of functions that " "will be used as the callbacks for the Godot API:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1548 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1552 msgid "" "There are actually two ways of registering virtual methods. Only one has the " "``get`` part, in which you give Godot a properly crafted function pointer " @@ -119445,17 +121154,17 @@ msgid "" "example we will only use it for one method, this way is simpler to expand." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1558 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1562 msgid "So let's implement those two functions in the ``gdexample.c`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1582 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1586 msgid "" "Those functions are also quite straightforward after making all the helpers " "previously." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1585 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1589 msgid "" "For the first one, we simply check if the function name requested is " "``_process`` and if it is we return a function pointer to our implementation " @@ -119464,7 +121173,7 @@ msgid "" "is meant only for one class and we don't have any data associated with it." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1591 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1595 msgid "" "The second one is similar. If it is the ``_process()`` method, it uses the " "given function pointer to call the ``ptrcall`` helper, passing the call " @@ -119472,7 +121181,7 @@ msgid "" "other virtual methods being implemented." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1596 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1600 msgid "" "The only thing missing is using those callbacks when the class is " "registered. Go to the ``init.c`` file and change the ``class_info`` " @@ -119480,7 +121189,7 @@ msgid "" "previously:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1616 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1620 msgid "" "This is enough to bind the virtual method. If you build the extension and " "run the demo project again, the ``_process()`` function will be called. You " @@ -119488,7 +121197,7 @@ msgid "" "We will solve this now by making the custom node move following a pattern." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1621 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1625 msgid "" "In order to make our node do stuff, we'll need to call Godot methods. Not " "only the GDExtension API functions as we've being doing so far, but actual " @@ -119496,30 +121205,30 @@ msgid "" "extra setup." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1625 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1629 msgid "" "First, let's add :ref:`class_Vector2` to our ``defs.h`` file, so we can use " "it in our method:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1649 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1653 msgid "" "The ``REAL_T_IS_DOUBLE`` define is only needed if your Godot version was " "built with double precision support, which is not the default." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1652 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1656 msgid "" "Now, in the ``api.h`` file, we'll add few things to the API structs, " "including a new one for holding engine methods to call." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1677 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1681 msgid "" "Then in the ``api.c`` file we can grab the function pointers from Godot:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1699 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1705 msgid "" "The only noteworthy part here is the ``Vector2`` constructor, for which we " "request the index ``3``. Since there are multiple constructors with " @@ -119529,20 +121238,20 @@ msgid "" "``extension_api.json`` file. Note we also need a new local helper to get it." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1706 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1712 msgid "" "Be aware that we don't get anything for the methods struct here. This is " "because this function is called too early in the initialization process, so " "classes won't be properly registered yet." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1710 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1716 msgid "" "Instead, we're gonna use the initialization level callback to grab those " "when we are registering our custom class. Add this to the ``init.c`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1736 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1742 msgid "" "Here we create ``StringName``'s for the class and method we want to get, " "then use the GDExtension API to retrieve their ``MethodBind``, which is an " @@ -119551,7 +121260,7 @@ msgid "" "going to use it in a ``Sprite2D``, a derived class." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1742 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1748 msgid "" "The seemingly random number for getting the bind is actually a hash of the " "method signature. This allows Godot to match the method you're requesting " @@ -119561,13 +121270,13 @@ msgid "" "You can get the value of this hash from the ``extension_api.json`` file." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1749 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1755 msgid "" "With all that, we can finally implement our custom ``_process()`` method in " "the ``gdexample.c`` file:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1779 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1785 msgid "" "After updating the time passed scaled by the ``speed`` property, it creates " "``x`` and ``y`` values based on that, also modulated by the ``amplitude`` " @@ -119575,59 +121284,59 @@ msgid "" "is needed for the ``sin()`` and ``cos()`` functions used here." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1784 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1790 msgid "" "Then it sets up an array of arguments to construct a ``Vector2``, followed " "by calling the constructor. It sets up another array of arguments and use it " "to call the ``set_position()`` method via the bind we acquired previously." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1788 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1794 msgid "Since nothing here allocates any memory, there's not a need to cleanup." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1790 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1796 msgid "" "Now we can build the extension again and reopen Godot. Even in the editor " "you'll see the custom sprite moving." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1795 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1801 msgid "" "Try changing the **Speed** and **Amplitude** properties and see how the " "sprite react." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1799 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1805 msgid "Registering and emitting a signal" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1801 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1807 msgid "" "To complete this tutorial, let's see how you can register a custom signal " "and emit it when appropriate. As you might have guessed, we'll need a few " "more function pointers from the API and more helper functions." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1805 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1811 msgid "" "In the ``api.h`` file we're adding two things. One is an API function to " "register a signal, the other is a helper function to wrap the signal binding." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1825 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1831 msgid "" "In this case we only have a version for one argument, since it's what we're " "going to use." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1828 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1834 msgid "" "Moving to the ``api.c`` file, we can load this new function pointer and " "implement the helper:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1865 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1871 msgid "" "This one is very similar to the function to bind methods. The main " "difference is that we don't need to fill another struct, we just pass the " @@ -119635,11 +121344,11 @@ msgid "" "amount of arguments the signal provides." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1870 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1876 msgid "With this we can bind the signal in ``gdexample.c``:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1880 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1886 msgid "" "In order to emit a signal, we need to call the :ref:`emit_signal() " "` method on our custom node. Since this is " @@ -119648,11 +121357,11 @@ msgid "" "require a few more steps of plumbing to get done." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1886 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1892 msgid "First, in the ``defs.h`` file we create a definition for Variant:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1914 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1920 msgid "" "We first set the size of Variant together with the size of Vector2 that we " "added before. Then we use it to create an opaque struct that is enough to " @@ -119660,7 +121369,7 @@ msgid "" "a fallback, since by the official Godot builds use single precision." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1919 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1925 msgid "" "The ``emit_signal()`` function will be called with two arguments. The first " "is the name of the signal to be emitted and the second is the argument we're " @@ -119671,19 +121380,19 @@ msgid "" "it." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1926 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1932 msgid "" "In the ``api.h``, we're adding a few things to the existing structs, plus a " "new helper function for the call:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1967 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:1973 msgid "" "Now let's switch to the ``api.c`` file to load these new function pointers " "and implement the helper function." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2012 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2019 msgid "" "This helper function has some boilerplate code but is quite straightforward. " "It sets up the two arguments inside stack allocated Variants, then creates " @@ -119692,7 +121401,7 @@ msgid "" "be uninitialized." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2017 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2024 msgid "" "Then it actually calls the MethodBind using the instance we provided and the " "arguments. The ``NULL`` at the end would be a pointer to a " @@ -119701,94 +121410,94 @@ msgid "" "simplicity we're not gonna handle that here." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2023 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2030 msgid "" "At the end we need to destruct the Variants we created. While technically " "the Vector2 one does not require destructing, it is clearer to cleanup " "everything." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2026 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2033 msgid "" "We also need to load the MethodBind, which we'll do in the ``init.c`` file, " "right after loading the one for the ``set_position`` method we did before:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2045 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2052 msgid "" "Note that we reuse the ``native_class_name`` and ``method_name`` variables " "here, so we don't need to declare new ones." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2048 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2055 msgid "" "Now go to the ``gdexample.h`` file where we're going to add a couple of " "fields:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2062 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2069 msgid "" "The first one will store the time passed since the last signal was emitted, " "since we'll be doing so at regular intervals. The other is just to cache the " "signal name so we don't need to create a new StringName every time." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2066 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2073 msgid "" "In the source ``gdexample.c`` file we can change the constructor and " "destructor to deal with the new fields:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2086 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2093 msgid "It is important to destruct the StringName to avoid memory leaks." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2088 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2095 msgid "" "Now we can add to the ``gdexample_class_process()`` function to actually " "emit the signal:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2106 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2113 msgid "" "This updates the time passed for the signal emission and, if it is over one " "second it calls the ``emit_signal()`` function on the current instance, " "passing the name of the signal and the new position as arguments." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2110 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2117 msgid "" "Now we're done with our C GDExtension. Build it once more and reopen the " "demo project in the editor." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2113 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2120 msgid "" "In the documentation page for ``GDExample`` you can see the new signal we " "bound:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2117 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2124 msgid "" "To check it's working, let's add a small script to the root node, parent of " "our custom one, that prints the position to the output every time it " "receives the signal:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2131 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2138 msgid "" "Run the project and you can observe the values being printed in the Output " "dock in the editor:" msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2139 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2146 msgid "" "This tutorial shows a basic extension with custom methods, properties, and " "signals. While it does require a good amount of boilerplate, it can scale " "well by creating helper functions to handle the tedious tasks." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2143 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2150 msgid "" "This should serve as a good basis to understand the GDExtension API and as a " "starting point to create custom binding generators. In fact, it would be " @@ -119797,7 +121506,7 @@ msgid "" "is quite straightforward and not very verbose." msgstr "" -#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2149 +#: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2156 msgid "" "If you want to create actual extensions, it is preferred to use the C++ " "bindings instead, as it takes away all of the boilerplate from your code. " @@ -121361,6 +123070,308 @@ msgid "" "get started finding which parts of your code need optimization." msgstr "" +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:4 +msgid "Using the ObjectDB profiler" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:6 +msgid "" +"Since Godot 4.6, there is a new **ObjectDB Profiler** tab in the Debugger " +"bottom panel. This profiler allows you to take snapshots of the current " +"state of the ObjectDB, which is the database that contains all " +"the :ref:`class_object`-derived classes currently allocated in memory. This " +"is useful for identifying memory leaks and understanding the memory usage of " +"your project." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:12 +msgid "" +"Additionally, this tool is able to visualize differences between two " +"snapshots. This can be used to identify improvements or regressions in " +"memory usage after making changes to your project. Reducing memory usage can " +"lead to better performance, even in cases where memory is not a bottleneck. " +"By reducing memory usage, you can perform fewer allocations, which can be a " +"costly operation, especially if performed in large amounts during gameplay." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:21 +msgid "" +"See :ref:`doc_node_alternatives` for information on using lighter-weight " +"alternatives to nodes, which can help reduce memory usage in your project." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:26 +msgid "" +"The ObjectDB profiler does **not** track every bit of memory used by the " +"engine or by external libraries. Native engine classes that are not exposed " +"to the scripting API will not appear in snapshots." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:30 +msgid "" +"Consider using external memory profiling tools if you need access to this " +"information." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:35 +msgid "" +"Open the ObjectDB Profiler tab in the :menu:`Debugger` bottom panel. You " +"will land on the summary page with no snapshots taken yet." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:38 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:42 +msgid "ObjectDB profiler summary with no snapshots taken" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:44 +msgid "" +"Run the project, then get to a point where you'd like to take a snapshot " +"(for example, after loading a level). Click :button:`Take ObjectDB Snapshot` " +"to take a snapshot at the current point in time. If the button appears " +"grayed out, make sure the project is running first." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:49 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:53 +msgid "ObjectDB profiler summary with one snapshot taken" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:55 +msgid "" +"You can take multiple snapshots during a single run of the project. Also, " +"you can right-click a snapshot in the snapshot list to rename it, show it in " +"the file manager, or delete it." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:61 +msgid "" +"It's a good idea to rename snapshots after taking them to give them " +"descriptive names (e.g., ``before_optimization``, ``after_optimization``). " +"Regardless of the name, the date at which the snapshot was taken remains " +"saved in the snapshot file itself." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:66 +msgid "" +"Snapshot files have a ``.odb_snapshot`` extension and are located in " +"``user://objectdb_snapshots/`` (see :ref:`Data paths " +"` details). These can safely " +"be copied across devices, as they're platform-independent." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:71 +msgid "Viewing differences between snapshots" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:73 +msgid "" +"After taking at least two snapshots, the :menu:`Diff Against` dropdown " +"becomes available. Here, you can select another snapshot to compare the " +"currently selected snapshot with." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:77 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:81 +msgid "" +"Diff Against dropdown in the bottom-left corner of the ObjectDB profiler" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:83 +msgid "" +"The summary page will then show the differences between the two snapshots:" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:85 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:89 +msgid "Two snapshots being compared in the Summary tab" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:91 +msgid "" +"This also applies to every other tab in the ObjectDB profiler, which will " +"show the differences between the two snapshots in additional columns." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:97 +msgid "" +"In the Classes tab, you can view how many instances of each class have been " +"created at the moment the snapshot was taken:" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:100 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:104 +msgid "One snapshots being viewed in the Classes tab" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:106 +msgid "" +"When in diff mode, it will show the class instance count for the currently " +"selected snapshot (column A) and the snapshot that is being diffed against " +"(column B). It will also show the difference in instance count in the column " +"Delta." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:110 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:114 +msgid "" +"Two snapshots being compared in the Classes tab. Here, column A is " +"``second_session``, column B is ``first_session``" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:116 +msgid "" +"You can click on a class in the list on the right to view it in the " +"inspector." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:118 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:122 +msgid "A selected class instance being viewed in the inspector" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:126 +msgid "" +"Previewing instances in the inspector is also available in other tabs " +"(Nodes, Objects, and RefCounted)." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:130 +msgid "Objects" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:132 +msgid "" +"The Objects tab is similar, but differs in the way it presents data. Here, " +"every instance is listed in a linear fashion, instead of grouping them by " +"class. When selecting an object, you will see a list of other objects it " +"references on the right (:menu:`Outbound References`), as well as a list of " +"objects it's being referenced by (:menu:`Inbound References`)." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:138 +msgid "" +"This allows you to view objects either in a \"top-down\" manner (viewing " +"what objects a given object references) or in a \"bottom-up\" manner " +"(viewing what objects reference a given object)." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:142 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:146 +msgid "The Objects tab being used to view objects in a \"top-down\" manner" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:148 +msgid "" +"In the above image, clicking the ``default_font`` object in the list will " +"switch the view to the perspective of that object. This object is being " +"referenced by a lot of other objects as well, which effectively switches to " +"a \"bottom-up\" perspective." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:153 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:157 +msgid "The Objects tab being used to view objects in a \"bottom-up\" manner" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:162 +msgid "" +"Next, the Nodes tab shows the scene tree at the time the snapshot was taken." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:164 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:168 +msgid "The Nodes tab being used to view the scene tree" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:170 +msgid "" +"This tab is particularly interesting in diff view, since it supports showing " +"the difference between the two snapshots in a more visual manner. " +"When :button:`Combined Diff` is unchecked, you can see the differences side " +"by side." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:174 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:178 +msgid "Separate diff view in the Nodes tab" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:180 +msgid "" +"When :button:`Combined Diff` is checked, you can see the differences merged " +"into a single tree, with added nodes highlighted in green and removed nodes " +"highlighted in red." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:184 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:188 +msgid "Combined diff view in the Nodes tab" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:190 +msgid "" +"Additionally, you can view a list of orphan nodes (nodes that are not " +"attached to the scene tree root) at the end of the tree view. You can view " +"it more easily by collapsing the root node, since these are listed outside " +"the main scene tree." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:195 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:199 +msgid "Orphan nodes at the end of the nodes tree in the ObjectDB profiler" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:202 +msgid "RefCounted" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:204 +msgid "" +"The last tab is the RefCounted tab. This tab is similar to the Objects tab, " +"but it shows the reference counts of :ref:`class_refcounted`-derived classes " +"directly in the table. The table has four columns:" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:208 +msgid "**Native Refs:** The number of native engine references to the object." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:209 +msgid "**ObjectDB Refs:** The number of ObjectDB references to the object." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:210 +msgid "**Total Refs:** The sum of native references and ObjectDB references." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:211 +msgid "**ObjectDB Cycles:** The number of circular references detected." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:213 +msgid "" +"When in diff view, snapshot B is always listed *above* snapshot A if a " +"RefCounted instance exists in both snapshots." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:216 +msgid "" +"The list on the right shows details on the selected instance, including a " +"list of references and whether these are duplicates." +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:219 +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:223 +msgid "The RefCounted tab being used to view RefCounted instances" +msgstr "" + +#: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:227 +msgid "" +"The RefCounted tab does **not** list objects that derive directly " +"from :ref:`class_object`, as these don't use reference counting." +msgstr "" + #: ../../docs/tutorials/scripting/debug/custom_performance_monitors.rst:4 msgid "Custom performance monitors" msgstr "" @@ -121375,8 +123386,8 @@ msgstr "" #: ../../docs/tutorials/scripting/debug/custom_performance_monitors.rst:14 msgid "" -"Since Godot 4.0, you can declare custom values to be displayed in the " -"Monitors tab. Example use cases for custom performance monitors include:" +"Godot lets you declare custom values to be displayed in the Monitors tab. " +"Example use cases for custom performance monitors include:" msgstr "" #: ../../docs/tutorials/scripting/debug/custom_performance_monitors.rst:17 @@ -122568,12 +124579,12 @@ msgid "The following operators are available:" msgstr "" #: ../../docs/tutorials/scripting/evaluating_expressions.rst:37 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:493 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:501 msgid "Operator" msgstr "" #: ../../docs/tutorials/scripting/evaluating_expressions.rst:37 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1147 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1188 #: ../../docs/engine_details/architecture/variant_class.rst:57 #: ../../docs/engine_details/architecture/custom_godot_servers.rst:499 msgid "Notes" @@ -122734,7 +124745,7 @@ msgid "The output from the script will be:" msgstr "" #: ../../docs/tutorials/scripting/evaluating_expressions.rst:226 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1271 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1312 #: ../../docs/tutorials/shaders/shader_reference/shader_functions.rst:4 msgid "Built-in functions" msgstr "" @@ -123899,7 +125910,7 @@ msgstr "" #: ../../docs/tutorials/scripting/singletons_autoload.rst:151 msgid "" -"The next step is to add this script to the autoLoad list. Starting from the " +"The next step is to add this script to the autoload list. Starting from the " "menu, open **Project > Project Settings > Globals > Autoload** and select " "the script by clicking the browse button or typing its path: ``res://" "global.gd``. Press **Add** to add it to the autoload list and name it " @@ -124940,7 +126951,7 @@ msgid "Void datatype, useful only for functions that return nothing." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:29 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1149 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1190 msgid "**bool**" msgstr "" @@ -124949,7 +126960,7 @@ msgid "Boolean datatype, can only contain ``true`` or ``false``." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:31 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1151 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1192 msgid "**bvec2**" msgstr "" @@ -124958,7 +126969,7 @@ msgid "Two-component vector of booleans." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:33 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1161 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1202 msgid "**bvec3**" msgstr "" @@ -124967,7 +126978,7 @@ msgid "Three-component vector of booleans." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:35 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1163 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1204 msgid "**bvec4**" msgstr "" @@ -124976,12 +126987,12 @@ msgid "Four-component vector of booleans." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:37 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:872 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1151 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1161 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1163 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1165 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1173 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:880 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1192 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1202 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1204 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1206 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1214 msgid "**int**" msgstr "" @@ -124990,7 +127001,7 @@ msgid "32 bit signed scalar integer." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:39 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1167 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1208 msgid "**ivec2**" msgstr "" @@ -124999,7 +127010,7 @@ msgid "Two-component vector of signed integers." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:41 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1169 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1210 msgid "**ivec3**" msgstr "" @@ -125008,7 +127019,7 @@ msgid "Three-component vector of signed integers." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:43 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1171 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1212 msgid "**ivec4**" msgstr "" @@ -125017,7 +127028,7 @@ msgid "Four-component vector of signed integers." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:45 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1173 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1214 msgid "**uint**" msgstr "" @@ -125026,7 +127037,7 @@ msgid "Unsigned scalar integer; can't contain negative numbers." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:47 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1175 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1216 msgid "**uvec2**" msgstr "" @@ -125035,7 +127046,7 @@ msgid "Two-component vector of unsigned integers." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:49 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1177 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1218 msgid "**uvec3**" msgstr "" @@ -125044,7 +127055,7 @@ msgid "Three-component vector of unsigned integers." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:51 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1179 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1220 msgid "**uvec4**" msgstr "" @@ -125053,7 +127064,7 @@ msgid "Four-component vector of unsigned integers." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:53 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1181 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1222 msgid "**float**" msgstr "" @@ -125062,7 +127073,7 @@ msgid "32 bit floating-point scalar." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:55 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1183 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1224 msgid "**vec2**" msgstr "" @@ -125071,7 +127082,7 @@ msgid "Two-component vector of floating-point values." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:57 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1185 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1226 msgid "**vec3**" msgstr "" @@ -125080,7 +127091,7 @@ msgid "Three-component vector of floating-point values." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:59 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1187 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1228 msgid "**vec4**" msgstr "" @@ -125089,7 +127100,7 @@ msgid "Four-component vector of floating-point values." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:61 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1197 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1238 msgid "**mat2**" msgstr "" @@ -125098,7 +127109,7 @@ msgid "2x2 matrix, in column major order." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:63 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1200 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1241 msgid "**mat3**" msgstr "" @@ -125107,7 +127118,7 @@ msgid "3x3 matrix, in column major order." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:65 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1202 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1243 msgid "**mat4**" msgstr "" @@ -125116,19 +127127,19 @@ msgid "4x4 matrix, in column major order." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:67 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:876 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:878 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:880 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:882 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:884 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:886 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:888 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:890 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:892 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:894 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:896 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:898 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:900 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1205 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:902 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:904 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:906 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:908 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1246 msgid "**sampler2D**" msgstr "" @@ -125137,7 +127148,7 @@ msgid "Sampler type for binding 2D textures, which are read as float." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:69 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1207 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1248 msgid "**isampler2D**" msgstr "" @@ -125146,7 +127157,7 @@ msgid "Sampler type for binding 2D textures, which are read as signed integer." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:71 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1209 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1250 msgid "**usampler2D**" msgstr "" @@ -125156,7 +127167,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:73 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1211 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1252 msgid "**sampler2DArray**" msgstr "" @@ -125165,7 +127176,7 @@ msgid "Sampler type for binding 2D texture arrays, which are read as float." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:75 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1213 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1254 msgid "**isampler2DArray**" msgstr "" @@ -125175,7 +127186,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:77 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1215 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1256 msgid "**usampler2DArray**" msgstr "" @@ -125186,7 +127197,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:79 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1217 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1258 msgid "**sampler3D**" msgstr "" @@ -125195,7 +127206,7 @@ msgid "Sampler type for binding 3D textures, which are read as float." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:81 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1219 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1260 msgid "**isampler3D**" msgstr "" @@ -125204,7 +127215,7 @@ msgid "Sampler type for binding 3D textures, which are read as signed integer." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:83 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1221 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1262 msgid "**usampler3D**" msgstr "" @@ -125214,7 +127225,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:85 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1223 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1264 msgid "**samplerCube**" msgstr "" @@ -125223,7 +127234,7 @@ msgid "Sampler type for binding Cubemaps, which are read as float." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:87 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1226 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1267 msgid "**samplerCubeArray**" msgstr "" @@ -125234,7 +127245,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:90 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1228 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1269 msgid "**samplerExternalOES**" msgstr "" @@ -125243,7 +127254,16 @@ msgid "" "External sampler type. Only supported in Compatibility/Android platform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:96 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:94 +msgid "" +"These types can also be put inside :ref:`arrays " +"` or :ref:`structs " +"`, which are also usable as function " +"parameters or return values. Arrays can be used as uniforms, but structs " +"cannot." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:100 msgid "" "Local variables are not initialized to a default value such as ``0.0``. If " "you use a variable without assigning it first, it will contain whatever " @@ -125252,13 +127272,13 @@ msgid "" "default value." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:105 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:109 msgid "" "The shading language supports the same comment syntax as used in C# and C++, " "using ``//`` for single-line comments and ``/* */`` for multi-line comments:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:120 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:124 msgid "" "Additionally, you can use documentation comments that are displayed in the " "inspector when hovering a shader parameter. Documentation comments are " @@ -125268,14 +127288,14 @@ msgid "" "just one (``/*``):" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:136 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:140 msgid "" "The asterisks on the follow-up lines are not required, but are recommended " "as per the :ref:`doc_shaders_style_guide`. These asterisks are automatically " "stripped by the inspector, so they won't appear in the tooltip." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:143 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:147 msgid "" "Just like GLSL ES 3.0, implicit casting between scalars and vectors of the " "same size but different type is not allowed. Casting of types of different " @@ -125283,24 +127303,24 @@ msgid "" "constructors." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:155 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:159 msgid "" "Default integer constants are signed, so casting is always needed to convert " "to unsigned:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:165 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:169 msgid "Members" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:167 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:171 msgid "" "Individual scalar members of vector types are accessed via the \"x\", \"y\", " "\"z\" and \"w\" members. Alternatively, using \"r\", \"g\", \"b\" and \"a\" " "also works and is equivalent. Use whatever fits best for your needs." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:171 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:175 msgid "" "For matrices, use the ``m[column][row]`` indexing syntax to access each " "scalar, or ``m[column]`` to access a vector by column index. For example, " @@ -125308,58 +127328,58 @@ msgid "" "matrix (4th column, 2nd line) you use ``m[3][1]`` or ``m[3].y``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:176 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:180 msgid "Constructing" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:178 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:182 msgid "Construction of vector types must always pass:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:190 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:194 msgid "" "Construction of matrix types requires vectors of the same dimension as the " "matrix, interpreted as columns. You can also build a diagonal matrix using " "``matx(float)`` syntax. Accordingly, ``mat4(1.0)`` is an identity matrix." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:200 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:204 msgid "" "Matrices can also be built from a matrix of another dimension. There are two " "rules:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:203 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:207 msgid "" "1. If a larger matrix is constructed from a smaller matrix, the additional " "rows and columns are set to the values they would have in an identity " -"matrix. 2. If a smaller matrix is constructed from a larger matrix, the top, " +"matrix. 1. If a smaller matrix is constructed from a larger matrix, the top, " "left submatrix of the larger matrix is used." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:215 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:219 msgid "Swizzling" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:217 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:221 msgid "" "It is possible to obtain any combination of components in any order, as long " "as the result is another vector type (or scalar). This is easier shown than " "explained:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:235 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:239 #: ../../docs/tutorials/shaders/converting_glsl_to_godot_shaders.rst:116 msgid "Precision" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:237 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:241 msgid "" "It is possible to add precision modifiers to datatypes; use them for " "uniforms, variables, arguments and varyings:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:247 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:251 msgid "" "Using lower precision for some operations can speed up the math involved (at " "the cost of less precision). This is rarely needed in the vertex processor " @@ -125367,7 +127387,7 @@ msgid "" "useful in the fragment processor." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:252 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:256 msgid "" "Some architectures (mainly mobile) can benefit significantly from this, but " "there are downsides such as the additional overhead of conversion between " @@ -125377,43 +127397,43 @@ msgid "" "necessary." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:261 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:267 msgid "Arrays are containers for multiple variables of a similar type." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:264 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:270 msgid "Local arrays" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:266 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:272 msgid "" "Local arrays are declared in functions. They can use all of the allowed " "datatypes, except samplers. The array declaration follows a C-style syntax: " "``[const] + [precision] + typename + identifier + [array size]``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:276 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:282 msgid "They can be initialized at the beginning like:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:288 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:294 msgid "" "You can declare multiple arrays (even with different sizes) in one " "expression:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:298 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:304 msgid "To access an array element, use the indexing syntax:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:308 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:314 msgid "" "Arrays also have a built-in function ``.length()`` (not to be confused with " "the built-in ``length()`` function). It doesn't accept any parameters and " "will return the array's size." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:321 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:327 msgid "" "If you use an index either below 0 or greater than array size - the shader " "will crash and break rendering. To prevent this, use ``length()``, ``if``, " @@ -125423,23 +127443,23 @@ msgid "" "crash." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:329 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:335 msgid "Global arrays" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:331 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:337 msgid "" "You can declare arrays in global space as either ``const`` or ``uniform``:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:346 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:352 msgid "" "Global arrays use the same syntax as local arrays, except with a ``const`` " "or ``uniform`` added to their declaration. Note that uniform arrays can't " "have a default value." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:353 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:359 msgid "" "Use the ``const`` keyword before the variable declaration to make that " "variable immutable, which means that it cannot be modified. All basic types, " @@ -125448,18 +127468,18 @@ msgid "" "at their declaration." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:367 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:373 msgid "" "Constants cannot be modified and additionally cannot have hints, but " "multiple of them (if they have the same type) can be declared in a single " "expression e.g" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:374 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:380 msgid "Similar to variables, arrays can also be declared with ``const``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:384 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:390 msgid "" "Constants can be declared both globally (outside of any function) or locally " "(inside a function). Global constants are useful when you want to have " @@ -125468,167 +127488,167 @@ msgid "" "they are not accessible outside of the shader." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:396 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:402 msgid "" "Constants of the ``float`` type must be initialized using ``.`` notation " "after the decimal part or by using the scientific notation. The optional " "``f`` post-suffix is also supported." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:406 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:412 msgid "" "Constants of the ``uint`` (unsigned int) type must have a ``u`` suffix to " "differentiate them from signed integers. Alternatively, this can be done by " "using the ``uint(x)`` built-in conversion function." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:415 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:423 msgid "Structs" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:417 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:425 msgid "" "Structs are compound types which can be used for better abstraction of " "shader code. You can declare them at the global scope like:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:428 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:436 msgid "After declaration, you can instantiate and initialize them like:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:440 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:448 msgid "Or use struct constructor for same purpose:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:446 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:454 msgid "" "Structs may contain other struct or array, you can also instance them as " "global constant:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:466 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:474 msgid "You can also pass them to functions:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:486 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:494 msgid "" "Godot shading language supports the same set of operators as GLSL ES 3.0. " "Below is the list of them in precedence order:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:493 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:501 msgid "Precedence" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:493 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:501 msgid "Class" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:495 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:503 msgid "1 (highest)" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:495 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:503 msgid "parenthetical grouping" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:495 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:503 msgid "**()**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:497 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:505 msgid "unary" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:497 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:505 msgid "**+, -, !, ~**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:499 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:507 msgid "multiplicative" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:499 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:507 msgid "**/, \\*, %**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:501 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:509 msgid "additive" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:501 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:509 msgid "**+, -**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:503 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:511 msgid "bit-wise shift" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:503 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:511 msgid "**<<, >>**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:505 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:513 msgid "relational" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:505 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:513 msgid "**<, >, <=, >=**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:507 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:515 msgid "equality" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:507 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:515 msgid "**==, !=**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:509 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:517 msgid "bit-wise AND" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:509 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:517 msgid "**&**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:511 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:519 msgid "bit-wise exclusive OR" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:511 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:519 msgid "**^**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:513 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:521 msgid "bit-wise inclusive OR" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:513 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:521 msgid "**|**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:515 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:523 msgid "logical AND" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:515 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:523 msgid "**&&**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:517 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:525 msgid "12 (lowest)" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:517 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:525 msgid "logical inclusive OR" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:517 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:525 msgid "**||**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:522 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:530 msgid "" "Most operators that accept vectors or matrices (multiplication, division, " "etc) operate component-wise, meaning the function is applied to the first " @@ -125636,41 +127656,41 @@ msgid "" "examples:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:530 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:538 #: ../../docs/tutorials/shaders/shader_reference/shader_functions.rst:48 msgid "Operation" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:530 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:538 #: ../../docs/tutorials/shaders/shader_reference/shader_functions.rst:48 msgid "Equivalent Scalar Operation" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:532 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:540 msgid "``vec3(4, 5, 6) + 2``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:532 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:540 msgid "``vec3(4 + 2, 5 + 2, 6 + 2)``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:534 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:542 msgid "``vec2(3, 4) * vec2(10, 20)``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:534 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:542 msgid "``vec2(3 * 10, 4 * 20)``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:536 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:544 msgid "``mat2(vec2(1, 2), vec2(3, 4)) + 10``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:536 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:544 msgid "``mat2(vec2(1 + 10, 2 + 10), vec2(3 + 10, 4 + 10))``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:539 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:547 #: ../../docs/tutorials/shaders/shader_reference/shader_functions.rst:61 msgid "" "The `GLSL Language Specification `__ for more " "information." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:638 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:646 msgid "Discarding" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:640 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:648 msgid "" "Fragment, light, and custom functions (called from fragment or light) can " "use the ``discard`` keyword. If used, the fragment is discarded and nothing " "is written." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:643 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:651 msgid "" "Beware that ``discard`` has a performance cost when used, as it will prevent " "the depth prepass from being effective on any surfaces using the shader. " @@ -125755,13 +127775,13 @@ msgid "" "place." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:652 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:660 msgid "" "It is possible to define functions in a Godot shader. They use the following " "syntax:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:668 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:676 msgid "" "You can only use functions that have been defined above (higher in the " "editor) the function from which you are calling them. Redefining a function " @@ -125769,33 +127789,33 @@ msgid "" "cause an error." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:672 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:680 msgid "Function arguments can have special qualifiers:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:674 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:682 msgid "**in**: Means the argument is only for reading (default)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:675 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:683 msgid "**out**: Means the argument is only for writing." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:676 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:684 msgid "**inout**: Means the argument is fully passed via reference." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:677 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:685 msgid "" "**const**: Means the argument is a constant and cannot be changed, may be " "combined with **in** qualifier." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:680 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:688 msgid "Example below:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:688 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:696 msgid "" "Function overloading is supported. You can define multiple functions with " "the same name, but different arguments. Note that `implicit casting " @@ -125803,12 +127823,12 @@ msgid "" "``int`` to ``float`` (``1`` to ``1.0``)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:708 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:716 #: ../../docs/tutorials/shaders/converting_glsl_to_godot_shaders.rst:59 msgid "Varyings" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:710 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:718 msgid "" "To send data from the vertex to the fragment (or light) processor function, " "*varyings* are used. They are set for every primitive vertex in the *vertex " @@ -125816,71 +127836,71 @@ msgid "" "processor*." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:732 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:740 msgid "Varying can also be an array:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:749 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:757 msgid "" "It's also possible to send data from *fragment* to *light* processors using " "*varying* keyword. To do so you can assign it in the *fragment* and later " "use it in the *light* function." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:765 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:773 msgid "" "Note that varying may not be assigned in custom functions or a *light " "processor* function like:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:785 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:793 msgid "" "This limitation was introduced to prevent incorrect usage before " "initialization." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:788 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:796 msgid "Interpolation qualifiers" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:790 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:798 msgid "" "Certain values are interpolated during the shading pipeline. You can modify " "how these interpolations are done by using *interpolation qualifiers*." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:807 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:815 msgid "There are two possible interpolation qualifiers:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:810 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:818 msgid "Qualifier" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:812 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:820 msgid "**flat**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:812 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:820 msgid "The value is not interpolated." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:814 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:822 msgid "**smooth**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:814 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:822 msgid "" "The value is interpolated in a perspective-correct fashion. This is the " "default." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:820 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:828 #: ../../docs/tutorials/shaders/your_first_shader/your_first_3d_shader.rst:231 msgid "Uniforms" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:822 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:830 msgid "" "Passing values to shaders is possible with *uniforms*, which are defined in " "the global scope of the shader, outside of functions. When a shader is later " @@ -125890,186 +127910,186 @@ msgid "" "can be a uniform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:836 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:844 msgid "" "You can set uniforms in the editor in the material's inspector. Alternately, " "you can set them :ref:`from code " "`." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:840 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:848 msgid "Uniform hints" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:842 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:850 msgid "" "Godot provides optional uniform hints to make the compiler understand what " "the uniform is used for, and how the editor should allow users to modify it." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:854 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:862 msgid "Uniforms can also be assigned default values:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:863 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:871 msgid "" "Note that when adding a default value and a hint, the default value goes " "after the hint." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:865 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:873 msgid "Full list of uniform hints below:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:868 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:876 msgid "Hint" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:870 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:878 msgid "**vec3, vec4**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:870 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:876 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:878 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:884 msgid "source_color" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:870 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:878 msgid "Used as color." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:872 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:880 msgid "hint_enum(\"String1\", \"String2\")" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:872 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:880 msgid "Displays int input as a dropdown widget in the editor." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:874 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:882 msgid "**int, float**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:874 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:882 msgid "hint_range(min, max[, step])" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:874 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:882 msgid "Restricted to values in a range (with min/max/step)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:876 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:884 msgid "Used as albedo color." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:878 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:886 msgid "hint_normal" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:878 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:886 msgid "Used as normalmap." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:880 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:888 msgid "hint_default_white" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:880 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:888 msgid "As value or albedo color, default to opaque white." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:882 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:890 msgid "hint_default_black" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:882 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:890 msgid "As value or albedo color, default to opaque black." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:884 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:892 msgid "hint_default_transparent" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:884 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:892 msgid "As value or albedo color, default to transparent black." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:886 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:894 msgid "hint_anisotropy" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:886 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:894 msgid "As flowmap, default to right." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:888 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:896 msgid "hint_roughness[_r, _g, _b, _a, _normal, _gray]" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:888 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:896 msgid "" "Used for roughness limiter on import (attempts reducing specular aliasing). " "``_normal`` is a normal map that guides the roughness limiter, with " "roughness increasing in areas that have high-frequency detail." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:892 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:900 msgid "filter[_nearest, _linear][_mipmap][_anisotropic]" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:892 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:900 msgid "Enabled specified texture filtering." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:894 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:902 msgid "repeat[_enable, _disable]" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:894 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:902 msgid "Enabled texture repeating." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:896 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:904 msgid "hint_screen_texture" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:896 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:904 msgid "Texture is the screen texture." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:898 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:906 msgid "hint_depth_texture" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:898 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:906 msgid "Texture is the depth texture." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:900 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:908 msgid "hint_normal_roughness_texture" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:900 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:908 msgid "Texture is the normal roughness texture (only supported in Forward+)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:904 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:912 msgid "Using ``hint_enum``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:906 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:914 msgid "" "You can access ``int`` values as a readable dropdown widget using the " "``hint_enum`` uniform:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:912 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:920 msgid "" "You can assign explicit values to the ``hint_enum`` uniform using colon " "syntax similar to GDScript:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:918 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:926 msgid "" "The value will be stored as an integer, corresponding to the index of the " "selected option (i.e. ``0``, ``1``, or ``2``) or the value assigned by colon " @@ -126078,11 +128098,11 @@ msgid "" "``String`` name." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:925 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:933 msgid "Using ``source_color``" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:927 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:935 msgid "" "Any texture which contains *sRGB color data* requires a ``source_color`` " "hint in order to be correctly sampled. This is because Godot renders in " @@ -126090,14 +128110,14 @@ msgid "" "is not used, the texture will appear washed out." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:932 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:940 msgid "" "Albedo and color textures should typically have a ``source_color`` hint. " "Normal, roughness, metallic, and height textures typically do not need a " "``source_color`` hint." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:936 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:944 msgid "" "Using ``source_color`` hint is required in the Forward+ and Mobile " "renderers, and in ``canvas_item`` shaders when :ref:`HDR " @@ -126108,31 +128128,31 @@ msgid "" "if you change renderers or disable ``HDR 2D``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:944 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:952 msgid "Uniform groups" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:946 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:954 msgid "" "To group multiple uniforms in a section in the inspector, you can use a " "``group_uniform`` keyword like this:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:954 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:962 msgid "You can close the group by using:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:960 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:968 msgid "" "The syntax also supports subgroups (it's not mandatory to declare the base " "group before this):" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:969 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:977 msgid "Global uniforms" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:971 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:979 msgid "" "Sometimes, you want to modify a parameter in many different shaders at once. " "With a regular uniform, this takes a lot of work as all these shaders need " @@ -126142,14 +128162,14 @@ msgid "" "``particles``, ``sky`` and ``fog``)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:978 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:986 msgid "" "Global uniforms are especially useful for environmental effects that affect " "many objects in a scene, like having foliage bend when the player is nearby, " "or having objects move with the wind." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:982 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:990 msgid "" "*Global uniforms* are not the same as *global scope* for an individual " "shader. While regular uniforms are defined outside of shader functions and " @@ -126158,7 +128178,7 @@ msgid "" "global scope)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:988 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:996 msgid "" "To create a global uniform, open the **Project Settings** then go to the " "**Shader Globals** tab. Specify a name for the uniform (case-sensitive) and " @@ -126167,17 +128187,17 @@ msgid "" "list of uniforms:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:994 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:998 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1002 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1006 msgid "" "Adding a global uniform in the Shader Globals tab of the Project Settings" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1000 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1008 msgid "After creating a global uniform, you can use it in a shader as follows:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1012 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1020 msgid "" "Note that the global uniform *must* exist in the Project Settings at the " "time the shader is saved, or compilation will fail. While you can assign a " @@ -126186,7 +128206,7 @@ msgid "" "Project Settings anyway." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1018 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1026 msgid "" "To change the value of a global uniform at runtime, use " "the :ref:`RenderingServer.global_shader_parameter_set " @@ -126194,25 +128214,25 @@ msgid "" "script:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1026 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1034 msgid "" "Assigning global uniform values can be done as many times as desired without " "impacting performance, as setting data doesn't require synchronization " "between the CPU and GPU." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1030 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1038 msgid "You can also add or remove global uniforms at runtime:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1037 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1045 msgid "" "Adding or removing global uniforms at runtime has a performance cost, " "although it's not as pronounced compared to getting global uniform values " "from a script (see the warning below)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1043 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1051 msgid "" "While you *can* query the value of a global uniform at runtime in a script " "using ``RenderingServer.global_shader_parameter_get(\"uniform_name\")``, " @@ -126220,7 +128240,7 @@ msgid "" "synchronize with the calling thread." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1048 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1056 msgid "" "Therefore, it's not recommended to read global shader uniform values " "continuously in a script. If you need to read values in a script after " @@ -126229,17 +128249,17 @@ msgid "" "them as global uniforms." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1057 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1065 msgid "Per-instance uniforms" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1061 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1069 msgid "" "Per-instance uniforms are available in both ``canvas_item`` (2D) and " "``spatial`` (3D) shaders." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1063 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1071 msgid "" "Sometimes, you want to modify a parameter on each node using the material. " "As an example, in a forest full of trees, when you want each tree to have a " @@ -126252,27 +128272,27 @@ msgid "" "also has a performance overhead." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1072 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1080 msgid "" "Per-instance uniforms are set on each GeometryInstance3D, rather than on " "each Material instance. Take this into account when working with meshes that " "have multiple materials assigned to them, or MultiMesh setups." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1088 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1096 msgid "" "After saving the shader, you can change the per-instance uniform's value " "using the inspector:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1091 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1095 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1099 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1103 msgid "" "Setting a per-instance uniform's value in the GeometryInstance3D section of " "the inspector" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1097 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1105 msgid "" "Per-instance uniform values can also be set at runtime " "using :ref:`set_instance_shader_parameter " @@ -126280,25 +128300,37 @@ msgid "" "node that inherits from :ref:`class_GeometryInstance3D`:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1105 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1113 msgid "" "When using per-instance uniforms, there are some restrictions you should be " "aware of:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1107 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1115 msgid "" "**Per-instance uniforms do not support textures or arrays**, only regular " -"scalar and vector types. As a workaround, you can pass a texture array as a " -"regular uniform, then pass the index of the texture to be drawn using a per-" -"instance uniform." +"scalar and vector types." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1111 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1119 +msgid "" +"Due to GLSL limitations, you cannot directly index a texture array using a " +"per-instance uniform. Sampler arrays can only be indexed by compile-time " +"constant expressions." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1123 +msgid "" +"As a workaround, pass a texture array as a regular uniform and the desired " +"texture index as a per-instance uniform. Then use a ``switch`` statement to " +"select the texture:" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1152 msgid "There is a practical maximum limit of 16 instance uniforms per shader." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1112 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1153 msgid "" "If your mesh uses multiple materials, the parameters for the first mesh " "material found will \"win\" over the subsequent ones, unless they have the " @@ -126306,159 +128338,159 @@ msgid "" "correctly." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1115 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1156 msgid "" "If you run into the above situation, you can avoid clashes by manually " "specifying the index (0-15) of the instance uniform by using the " "``instance_index`` hint:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1126 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1167 msgid "Setting uniforms from code" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1128 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1169 msgid "" "You can set uniforms from GDScript using the :ref:`set_shader_parameter() " "` method:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1138 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1179 msgid "" "The first argument to ``set_shader_parameter()`` is the name of the uniform " "in the shader. It must match *exactly* to the name of the uniform in the " "shader or else it will not be recognized." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1142 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1183 msgid "" "GDScript uses different variable types than GLSL does, so when passing " "variables from GDScript to shaders, Godot converts the type automatically. " "Below is a table of the corresponding types:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1147 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1188 msgid "GLSL type" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1147 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1188 msgid "GDScript type" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1151 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1161 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1163 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1192 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1202 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1204 msgid "Bitwise packed int where bit 0 (LSB) corresponds to x." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1153 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1194 msgid "For example, a bvec2 of (bx, by) could be created in the following way:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1167 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1175 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1208 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1216 msgid "**Vector2i**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1169 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1177 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1210 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1218 msgid "**Vector3i**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1171 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1179 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1212 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1220 msgid "**Vector4i**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1183 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1224 msgid "**Vector2**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1185 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1226 msgid "**Vector3**, **Color**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1185 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1226 msgid "When Color is used, it will be interpreted as (r, g, b)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1187 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1228 msgid "**Vector4**, **Color**, **Rect2**, **Plane**, **Quaternion**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1187 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1228 msgid "When Color is used, it will be interpreted as (r, g, b, a)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1189 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1230 msgid "" "When Rect2 is used, it will be interpreted as (position.x, position.y, " "size.x, size.y)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1192 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1233 msgid "" "When Plane is used it will be interpreted as (normal.x, normal.y, normal.z, " "d)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1197 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1238 msgid "**Transform2D**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1202 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1243 msgid "**Projection**, **Transform3D**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1202 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1243 msgid "When a Transform3D is used, the w Vector is set to the identity." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1205 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1207 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1209 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1246 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1248 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1250 msgid "**Texture2D**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1211 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1213 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1215 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1252 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1254 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1256 msgid "**Texture2DArray**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1217 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1219 -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1221 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1258 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1260 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1262 msgid "**Texture3D**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1223 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1264 msgid "**Cubemap**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1223 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1264 msgid "" "See :ref:`doc_importing_images_changing_import_type` for instructions on " "importing cubemaps for use in Godot." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1226 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1267 msgid "**CubemapArray**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1226 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1267 msgid "Only supported in Forward+ and Mobile, not Compatibility." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1228 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1269 msgid "**ExternalTexture**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1228 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1269 msgid "Only supported in Compatibility/Android platform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1231 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1272 msgid "" "Be careful when setting shader uniforms from GDScript, since no error will " "be thrown if the type does not match. Your shader will just exhibit " @@ -126467,11 +128499,11 @@ msgid "" "unintended consequences in cases where high precision is required." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1239 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1280 msgid "Uniform limits" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1241 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1282 msgid "" "There is a limit to the total size of shader uniforms that you can use in a " "single shader. On most desktop platforms, this limit is ``65536`` bytes, or " @@ -126482,7 +128514,7 @@ msgid "" "``bool`` is padded to the size of an ``int``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1249 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1290 msgid "" "Arrays count as the total size of their contents. If you need a uniform " "array that is larger than this limit, consider packing the data into a " @@ -126490,11 +128522,11 @@ msgid "" "limit, only the size of the sampler uniform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1255 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1296 msgid "Built-in variables" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1257 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1298 msgid "" "A large number of built-in variables are available, like ``UV``, ``COLOR`` " "and ``VERTEX``. What variables are available depends on the type of shader " @@ -126504,27 +128536,27 @@ msgid "" "see the corresponding pages:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1264 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1305 msgid ":ref:`Spatial shaders `" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1265 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1306 msgid ":ref:`Canvas item shaders `" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1266 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1307 msgid ":ref:`Particle shaders `" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1267 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1308 msgid ":ref:`Sky shaders `" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1268 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1309 msgid ":ref:`Fog shaders `" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1273 +#: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:1314 msgid "" "A large number of built-in functions are supported, conforming to GLSL ES " "3.0. See the :ref:`Built-in functions ` page for " @@ -129575,6 +131607,13 @@ msgstr "" msgid "Get the size of a texture." msgstr "" +#: ../../docs/tutorials/shaders/shader_reference/shader_functions.rst:2257 +msgid "" +"For performance reasons, this function should be avoided as it always " +"performs a full texture read. When possible, you should pass the texture " +"size as a uniform instead." +msgstr "" + #: ../../docs/tutorials/shaders/shader_reference/shader_functions.rst:0 #: ../../docs/tutorials/shaders/converting_glsl_to_godot_shaders.rst:101 #: ../../docs/tutorials/shaders/converting_glsl_to_godot_shaders.rst:168 @@ -131862,9 +133901,10 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shader_preprocessor.rst:17 msgid "" -"From Godot 4.0 onwards, you can use a shader preprocessor within text-based " -"shaders. The syntax is similar to what most GLSL shader compilers support " -"(which in turn is similar to the C/C++ preprocessor)." +"To avoid repetition and improve code reuse, you can use a shader " +"preprocessor within text-based shaders. The syntax is similar to what most " +"GLSL shader compilers support (which in turn is similar to the C/C++ " +"preprocessor)." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/shader_preprocessor.rst:23 @@ -132318,331 +134358,499 @@ msgid "" "Spatial shaders are used for shading 3D objects. They are the most complex " "type of shader Godot offers. Spatial shaders are highly configurable with " "different render modes and different rendering options (e.g. Subsurface " -"Scattering, Transmission, Ambient Occlusion, Rim lighting etc). Users can " +"Scattering, Transmission, Ambient Occlusion, Rim lighting, etc.). Users can " "optionally write vertex, fragment, and light processor functions to affect " "how objects are drawn." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:13 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:14 msgid "" "For visual examples of these render modes, see :ref:`Standard Material 3D " "and ORM Material 3D`." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:16 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:17 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:17 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:34 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:130 msgid "Render mode" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:18 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:19 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:19 msgid "**blend_mix**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:18 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:19 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:19 msgid "Mix blend mode (alpha is transparency), default." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:20 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:21 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:21 msgid "**blend_add**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:20 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:21 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:21 msgid "Additive blend mode." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:22 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:23 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:23 msgid "**blend_sub**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:22 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:23 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:23 msgid "Subtractive blend mode." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:24 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:25 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:25 msgid "**blend_mul**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:24 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:25 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:25 msgid "Multiplicative blend mode." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:26 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:27 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:27 msgid "**blend_premul_alpha**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:26 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:27 msgid "" "Premultiplied alpha blend mode (fully transparent = add, fully opaque = mix)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:28 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:29 msgid "**depth_draw_opaque**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:28 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:29 msgid "Only draw depth for opaque geometry (not transparent)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:30 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:31 msgid "**depth_draw_always**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:30 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:31 msgid "Always draw depth (opaque and transparent)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:32 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:33 msgid "**depth_draw_never**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:32 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:33 msgid "Never draw depth." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:34 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:35 msgid "**depth_prepass_alpha**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:34 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:35 msgid "Do opaque depth pre-pass for transparent geometry." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:36 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:37 msgid "**depth_test_disabled**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:36 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:37 msgid "Disable depth testing." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:38 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:39 +msgid "**depth_test_default**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:39 +msgid "" +"Depth test will discard the pixel if it is behind other pixels. In Forward+ " +"only, the pixel is also discarded if it's at the exact same depth as another " +"pixel." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:42 +msgid "**depth_test_inverted**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:42 +msgid "" +"Depth test will discard the pixel if it is in front of other pixels. Useful " +"for stencil effects." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:44 msgid "**sss_mode_skin**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:38 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:44 msgid "" "Subsurface Scattering mode for skin (optimizes visuals for human skin, e.g. " "boosted red channel)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:40 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:46 msgid "**cull_back**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:40 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:46 msgid "Cull back-faces (default)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:42 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:48 msgid "**cull_front**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:42 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:48 msgid "Cull front-faces." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:44 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:50 msgid "**cull_disabled**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:44 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:50 msgid "Culling disabled (double sided)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:46 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:52 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:31 msgid "**unshaded**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:46 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:52 msgid "" "Result is just albedo. No lighting/shading happens in material, making it " "faster to render." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:48 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:54 msgid "**wireframe**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:48 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:54 msgid "Geometry draws using lines (useful for troubleshooting)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:50 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:56 msgid "**debug_shadow_splits**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:50 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:56 msgid "" "Directional shadows are drawn using different colors for each split (useful " "for troubleshooting)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:52 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:58 msgid "**diffuse_burley**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:52 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:58 msgid "Burley (Disney PBS) for diffuse (default)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:54 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:60 msgid "**diffuse_lambert**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:54 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:60 msgid "Lambert shading for diffuse." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:56 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:62 msgid "**diffuse_lambert_wrap**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:56 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:62 msgid "Lambert-wrap shading (roughness-dependent) for diffuse." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:58 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:64 msgid "**diffuse_toon**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:58 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:64 msgid "Toon shading for diffuse." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:60 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:66 msgid "**specular_schlick_ggx**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:60 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:66 msgid "Schlick-GGX for direct light specular lobes (default)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:62 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:68 msgid "**specular_toon**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:62 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:68 msgid "Toon for direct light specular lobes." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:64 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:70 msgid "**specular_disabled**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:64 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:70 msgid "" "Disable direct light specular lobes. Doesn't affect reflected light (use " "``SPECULAR = 0.0`` instead)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:66 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:72 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:35 msgid "**skip_vertex_transform**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:66 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:72 msgid "" "``VERTEX``, ``NORMAL``, ``TANGENT``, and ``BITANGENT`` need to be " "transformed manually in the ``vertex()`` function." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:69 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:75 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:38 msgid "**world_vertex_coords**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:69 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:75 msgid "" "``VERTEX``, ``NORMAL``, ``TANGENT``, and ``BITANGENT`` are modified in world " "space instead of model space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:72 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:78 msgid "**ensure_correct_normals**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:72 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:78 msgid "" "Use when non-uniform scale is applied to mesh *(note: currently " "unimplemented)*." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:74 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:80 msgid "**shadows_disabled**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:74 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:80 msgid "" "Disable computing shadows in shader. The shader will not receive shadows, " "but can still cast them." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:76 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:82 msgid "**ambient_light_disabled**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:76 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:82 msgid "Disable contribution from ambient light and radiance map." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:78 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:84 msgid "**shadow_to_opacity**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:82 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:88 msgid "**vertex_lighting**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:82 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:88 msgid "Use vertex-based lighting instead of per-pixel lighting." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:84 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:90 msgid "**particle_trails**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:84 -msgid "Enables the trails when used on particles geometry." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:90 +msgid "Enables the trails when used on particle geometry." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:86 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:92 msgid "**alpha_to_coverage**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:86 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:88 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:92 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:94 msgid "" "Alpha antialiasing mode, see `here `_ for more." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:88 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:94 msgid "**alpha_to_coverage_and_one**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:90 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:96 msgid "**fog_disabled**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:90 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:96 msgid "" "Disable receiving depth-based or volumetric fog. Useful for ``blend_add`` " "materials like particles." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:94 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:100 +msgid "Stencil modes" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:104 +msgid "" +"Stencil support is experimental, use at your own risk. We will try to not " +"break compatibility as much as possible, but if significant flaws are found " +"in the API, it may change in the next minor version." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:109 +msgid "" +"Stencil operations are a set of operations that allow writing to an " +"efficient buffer in an hardware-accelerated manner. This is generally used " +"to mask in or out parts of the scene." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:113 +msgid "Some of the most well-known uses are:" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:115 +msgid "" +"Outlines: Mask out the inner mesh that is being outlined to avoid inner " +"outlines." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:116 +msgid "X-Ray: Display a mesh behind other objects." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:117 +msgid "" +"Portals: Draw geometry that is normally \"impossible\" (non-Euclidian) by " +"masking objects." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:121 +msgid "" +"You can only read from the stencil buffer in the transparent pass. Any " +"attempt to read in the opaque pass will fail, as it's currently not " +"supported behavior." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:124 +msgid "" +"Note that for compositor effects, the main renderer's stencil buffer can't " +"be copied to a custom texture." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:128 +msgid "Stencil mode" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:130 +msgid "**read**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:130 +msgid "Read from the stencil buffer." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:132 +msgid "**write**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:132 +msgid "Write reference value to the stencil buffer." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:134 +msgid "**write_if_depth_fail**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:134 +msgid "Write reference value to the stencil buffer if the depth test fails." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:136 +msgid "**compare_always**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:136 +msgid "Always pass stencil test." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:138 +msgid "**compare_equal**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:138 +msgid "" +"Pass stencil test if the reference value is equal to the stencil buffer " +"value." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:140 +msgid "**compare_not_equal**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:140 +msgid "" +"Pass stencil test if the reference value is not equal to the stencil buffer " +"value." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:142 +msgid "**compare_less**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:142 +msgid "" +"Pass stencil test if the reference value is less than the stencil buffer " +"value." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:144 +msgid "**compare_less_or_equal**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:144 +msgid "" +"Pass stencil test if the reference value is less than or equal to the " +"stencil buffer value." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:146 +msgid "**compare_greater**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:146 +msgid "" +"Pass stencil test if the reference value is greater than the stencil buffer " +"value." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:148 +msgid "**compare_greater_or_equal**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:148 +msgid "" +"Pass stencil test if the reference value is greater than or equal to the " +"stencil buffer value." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:152 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:42 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:46 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:140 @@ -132650,7 +134858,7 @@ msgstr "" msgid "Built-ins" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:96 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:154 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:44 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:48 msgid "" @@ -132661,7 +134869,7 @@ msgid "" "marked." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:100 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:158 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:48 msgid "" "Not all built-ins are available in all processing functions. To access a " @@ -132670,7 +134878,7 @@ msgid "" "accessing fragment built-ins from the ``light()`` function." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:105 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:163 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:53 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:53 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:147 @@ -132678,16 +134886,16 @@ msgstr "" msgid "Global built-ins" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:107 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:165 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:55 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:55 msgid "Global built-ins are available everywhere, including custom functions." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:110 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:178 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:288 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:478 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:168 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:236 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:359 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:549 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:58 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:108 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:218 @@ -132697,27 +134905,27 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:156 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:155 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:200 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:35 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:64 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:34 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:63 msgid "Built-in" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:112 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:170 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:60 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:60 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:157 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:37 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:36 msgid "in float **TIME**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:112 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:170 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:60 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:60 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:157 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:37 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:36 msgid "" "Global time since the engine has started, in seconds. It repeats after every " -"``3,600`` seconds (which can be changed with " +"``3,600`` seconds (which can be changed with " "the :ref:`rollover` setting). It's affected " "by :ref:`time_scale` but not by pausing. " @@ -132726,86 +134934,86 @@ msgid "" "update it each frame." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:120 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:178 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:69 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:69 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:186 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:46 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:45 msgid "in float **PI**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:120 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:178 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:69 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:69 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:186 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:46 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:45 msgid "" -"A ``PI`` constant (``3.141592``). A ratio of a circle's circumference to its " -"diameter and amount of radians in half turn." +"A ``PI`` constant (``3.141592``). The ratio of a circle's circumference to " +"its diameter and the number of radians in a half turn." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:123 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:181 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:72 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:72 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:189 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:49 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:48 msgid "in float **TAU**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:123 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:181 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:72 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:72 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:189 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:49 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:48 msgid "" -"A ``TAU`` constant (``6.283185``). An equivalent of ``PI * 2`` and amount of " -"radians in full turn." +"A ``TAU`` constant (``6.283185``). Equivalent to ``PI * 2`` and the number " +"of radians in a full turn." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:126 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:184 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:75 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:75 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:192 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:52 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:51 msgid "in float **E**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:126 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:184 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:75 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:75 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:192 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:52 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:51 msgid "" -"An ``E`` constant (``2.718281``). Euler's number and a base of the natural " +"An ``E`` constant (``2.718281``). Euler's number, the base of the natural " "logarithm." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:128 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:186 msgid "in bool **OUTPUT_IS_SRGB**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:128 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:186 msgid "" "``true`` when output is in sRGB color space (this is ``true`` in the " "Compatibility renderer, ``false`` in Forward+ and Mobile)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:131 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:189 msgid "in float **CLIP_SPACE_FAR**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:131 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:189 msgid "" "Clip space far ``z`` value. In the Forward+ or Mobile renderers, it's " "``0.0``. In the Compatibility renderer, it's ``-1.0``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:137 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:195 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:80 msgid "Vertex built-ins" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:139 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:197 msgid "" "Vertex data (``VERTEX``, ``NORMAL``, ``TANGENT``, and ``BITANGENT``) are " "presented in model space (also called local space). If not written to, these " @@ -132813,25 +135021,25 @@ msgid "" "transformed into view space to be used in ``fragment()``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:143 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:201 msgid "" "They can optionally be presented in world space by using the " "``world_vertex_coords`` render mode." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:145 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:203 msgid "" "Users can disable the built-in modelview transform (projection will still " "happen later) and do it manually with the following code:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:160 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:218 msgid "" "Other built-ins, such as ``UV``, ``UV2``, and ``COLOR``, are also passed " "through to the ``fragment()`` function if not modified." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:162 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:220 msgid "" "Users can override the modelview and projection transforms using the " "``POSITION`` built-in. If ``POSITION`` is written to anywhere in the shader, " @@ -132841,402 +135049,419 @@ msgid "" "passed to the fragment shader still comes from ``VERTEX``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:167 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:225 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:100 msgid "" "For instancing, the ``INSTANCE_CUSTOM`` variable contains the instance " "custom data. When using particles, this information is usually:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:170 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:228 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:103 msgid "**x**: Rotation angle in radians." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:171 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:229 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:104 msgid "**y**: Phase during lifetime (``0.0`` to ``1.0``)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:172 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:230 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:105 msgid "**z**: Animation frame." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:174 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:232 msgid "" "This allows you to easily adjust the shader to a particle system using " -"default particles material. When writing a custom particle shader, this " -"value can be used as desired." +"default particle material. When writing a custom particle shader, this value " +"can be used as desired." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:180 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:290 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:480 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:238 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:361 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:551 msgid "in vec2 **VIEWPORT_SIZE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:180 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:290 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:480 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:238 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:361 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:551 msgid "Size of viewport (in pixels)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:182 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:315 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:491 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:240 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:386 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:562 msgid "in mat4 **VIEW_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:182 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:315 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:491 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:240 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:386 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:562 msgid "World space to view space transform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:184 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:317 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:489 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:242 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:388 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:560 msgid "in mat4 **INV_VIEW_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:184 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:317 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:489 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:242 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:388 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:560 msgid "View space to world space transform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:186 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:244 msgid "in mat4 **MAIN_CAM_INV_VIEW_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:186 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:244 msgid "" -"View space to world space transform of camera used to draw the current " +"View space to world space transform of the camera used to draw the current " "viewport." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:189 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:321 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:495 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:247 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:392 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:566 msgid "in mat4 **INV_PROJECTION_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:189 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:321 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:495 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:247 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:392 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:566 msgid "Clip space to view space transform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:191 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:323 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:249 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:394 msgid "in vec3 **NODE_POSITION_WORLD**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:191 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:323 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:249 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:394 msgid "Node position, in world space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:193 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:325 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:251 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:396 msgid "in vec3 **NODE_POSITION_VIEW**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:193 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:325 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:251 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:396 msgid "Node position, in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:195 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:327 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:253 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:398 msgid "in vec3 **CAMERA_POSITION_WORLD**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:195 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:327 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:253 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:398 msgid "" "Camera position, in world space. Represents the midpoint of the two eyes " "when in multiview/stereo rendering." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:199 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:330 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:257 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:401 msgid "in vec3 **CAMERA_DIRECTION_WORLD**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:199 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:330 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:257 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:401 msgid "Camera direction, in world space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:201 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:332 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:259 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:403 msgid "in uint **CAMERA_VISIBLE_LAYERS**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:201 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:332 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:259 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:403 msgid "Cull layers of the camera rendering the current pass." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:203 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:261 msgid "in int **INSTANCE_ID**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:203 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:261 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:122 msgid "Instance ID for instancing." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:205 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:263 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:124 msgid "in vec4 **INSTANCE_CUSTOM**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:205 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:263 msgid "Instance custom data (for particles, mostly)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:207 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:341 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:265 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:412 msgid "in int **VIEW_INDEX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:207 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:265 msgid "" "The view that we are rendering. ``VIEW_MONO_LEFT`` (``0``) for Mono (not " "multiview) or left eye, ``VIEW_RIGHT`` (``1``) for right eye." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:211 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:345 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:269 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:416 msgid "in int **VIEW_MONO_LEFT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:211 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:345 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:269 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:416 msgid "Constant for Mono or left eye, always ``0``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:213 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:347 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:271 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:418 msgid "in int **VIEW_RIGHT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:213 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:347 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:271 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:418 msgid "Constant for right eye, always ``1``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:215 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:349 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:273 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:420 msgid "in vec3 **EYE_OFFSET**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:215 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:349 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:273 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:420 msgid "" "Position offset for the eye being rendered, in view space. Only applicable " "for multiview rendering." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:218 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:276 msgid "inout vec3 **VERTEX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:218 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:276 msgid "" "Position of the vertex, in model space. In world space if " "``world_vertex_coords`` is used." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:221 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:279 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:134 msgid "in int **VERTEX_ID**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:221 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:279 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:134 msgid "The index of the current vertex in the vertex buffer." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:223 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:362 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:281 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:433 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:254 msgid "inout vec3 **NORMAL**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:223 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:281 msgid "" "Normal in model space. In world space if ``world_vertex_coords`` is used." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:226 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:365 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:284 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:436 msgid "inout vec3 **TANGENT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:226 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:284 msgid "" "Tangent in model space. In world space if ``world_vertex_coords`` is used." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:229 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:368 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:287 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:439 msgid "inout vec3 **BINORMAL**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:229 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:287 msgid "" "Binormal in model space. In world space if ``world_vertex_coords`` is used." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:232 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:290 msgid "out vec4 **POSITION**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:232 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:290 msgid "If written to, overrides final vertex position in clip space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:235 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:293 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:137 msgid "inout vec2 **UV**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:235 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:293 msgid "UV main channel." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:237 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:295 msgid "inout vec2 **UV2**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:237 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:295 msgid "UV secondary channel." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:239 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:297 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:140 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:270 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:100 msgid "inout vec4 **COLOR**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:239 -msgid "Color from vertices." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:297 +msgid "" +"Color from vertices. Limited to values between ``0.0`` and ``1.0`` for each " +"channel and 8 bits per channel precision (256 possible levels). Alpha " +"channel is supported. Values outside the allowed range are clamped, and " +"values may be rounded due to precision limitations. Use ``CUSTOM0``-" +"``CUSTOM3`` to pass data with more precision if needed." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:241 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:401 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:305 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:472 msgid "out float **ROUGHNESS**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:241 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:305 msgid "Roughness for vertex lighting." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:243 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:307 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:145 msgid "inout float **POINT_SIZE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:243 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:307 msgid "Point size for point rendering." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:245 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:309 msgid "inout mat4 **MODELVIEW_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:245 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:309 msgid "Model/local space to view space transform (use if possible)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:248 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:312 msgid "inout mat3 **MODELVIEW_NORMAL_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:250 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:309 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:487 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:314 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:380 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:558 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:110 msgid "in mat4 **MODEL_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:250 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:309 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:487 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:314 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:380 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:558 msgid "Model/local space to world space transform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:252 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:311 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:316 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:382 msgid "in mat3 **MODEL_NORMAL_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:254 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:318 msgid "inout mat4 **PROJECTION_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:254 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:319 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:493 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:318 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:390 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:564 msgid "View space to clip space transform." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:256 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:320 msgid "in uvec4 **BONE_INDICES**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:258 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:322 msgid "in vec4 **BONE_WEIGHTS**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:260 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:324 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:147 msgid "in vec4 **CUSTOM0**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:260 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:324 msgid "" "Custom value from vertex primitive. When using extra UVs, ``xy`` is UV3 and " "``zw`` is UV4." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:263 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:327 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:149 msgid "in vec4 **CUSTOM1**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:263 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:327 msgid "" "Custom value from vertex primitive. When using extra UVs, ``xy`` is UV5 and " "``zw`` is UV6." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:266 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:330 msgid "in vec4 **CUSTOM2**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:266 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:330 msgid "" "Custom value from vertex primitive. When using extra UVs, ``xy`` is UV7 and " "``zw`` is UV8." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:269 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:333 msgid "in vec4 **CUSTOM3**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:269 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:333 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:147 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:149 msgid "Custom value from vertex primitive." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:274 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:335 +msgid "out float **Z_CLIP_SCALE**" +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:335 +msgid "" +"If written to, scales the vertex towards the camera to avoid clipping into " +"things like walls. Lighting and shadows will continue to work correctly when " +"this is written to, but screen-space effects like SSAO and SSR may break " +"with lower scales. Try to keep this value as close to ``1.0`` as possible." +msgstr "" + +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:345 msgid "" "``MODELVIEW_MATRIX`` combines both the ``MODEL_MATRIX`` and ``VIEW_MATRIX`` " "and is better suited when floating point issues may arise. For example, if " @@ -133244,7 +135469,7 @@ msgid "" "point issues when using the separated ``MODEL_MATRIX`` and ``VIEW_MATRIX``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:278 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:349 msgid "" "``INV_VIEW_MATRIX`` is the matrix used for rendering the object in that " "pass, unlike ``MAIN_CAM_INV_VIEW_MATRIX``, which is the matrix of the camera " @@ -133252,12 +135477,12 @@ msgid "" "camera that is located at the position of the light." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:281 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:352 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:155 msgid "Fragment built-ins" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:283 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:354 msgid "" "The default use of a Godot fragment processor function is to set up the " "material properties of your object and to let the built-in renderer handle " @@ -133266,14 +135491,14 @@ msgid "" "corresponding functionality." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:292 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:482 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:363 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:553 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:220 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:301 msgid "in vec4 **FRAGCOORD**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:292 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:363 msgid "" "Coordinate of pixel center in screen space. ``xy`` specifies position in " "window. Origin is lower left. ``z`` specifies fragment depth. It is also " @@ -133281,83 +135506,83 @@ msgid "" "to." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:296 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:367 msgid "in bool **FRONT_FACING**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:296 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:367 msgid "``true`` if current face is front facing, ``false`` otherwise." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:298 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:505 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:369 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:576 msgid "in vec3 **VIEW**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:298 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:369 msgid "" "Normalized vector from fragment position to camera (in view space). This is " "the same for both perspective and orthogonal cameras." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:301 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:501 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:372 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:572 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:244 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:309 msgid "in vec2 **UV**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:301 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:501 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:372 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:572 msgid "UV that comes from the ``vertex()`` function." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:303 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:503 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:374 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:574 msgid "in vec2 **UV2**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:303 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:503 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:374 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:574 msgid "UV2 that comes from the ``vertex()`` function." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:305 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:376 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:307 msgid "in vec4 **COLOR**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:305 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:376 msgid "COLOR that comes from the ``vertex()`` function." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:307 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:378 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:230 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:320 msgid "in vec2 **POINT_COORD**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:307 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:378 msgid "Point coordinate for drawing points with ``POINT_SIZE``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:311 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:382 msgid "" "Model/local space to world space transform for normals. This is the same as " "``MODEL_MATRIX`` by default unless the object is scaled non-uniformly, in " "which case this is set to ``transpose(inverse(mat3(MODEL_MATRIX)))``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:319 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:493 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:390 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:564 msgid "in mat4 **PROJECTION_MATRIX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:334 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:405 msgid "in vec3 **VERTEX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:334 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:405 msgid "" "Position of the fragment (pixel), in view space. It is the ``VERTEX`` value " "from ``vertex()`` interpolated between the face's vertices and transformed " @@ -133365,163 +135590,162 @@ msgid "" "view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:338 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:409 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:267 msgid "inout vec3 **LIGHT_VERTEX**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:338 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:409 msgid "" "A writable version of ``VERTEX`` that can be used to alter light and " "shadows. Writing to this will not change the position of the fragment." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:341 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:412 msgid "" "The view that we are rendering. Used to distinguish between views in " "multiview/stereo rendering. ``VIEW_MONO_LEFT`` (``0``) for Mono (not " "multiview) or left eye, ``VIEW_RIGHT`` (``1``) for right eye." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:352 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:423 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:251 msgid "sampler2D **SCREEN_TEXTURE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:352 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:423 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:251 msgid "" "Removed in Godot 4. Use a ``sampler2D`` with ``hint_screen_texture`` instead." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:354 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:499 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:425 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:570 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:249 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:318 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:204 msgid "in vec2 **SCREEN_UV**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:354 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:499 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:425 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:570 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:249 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:318 -msgid "Screen UV coordinate for current pixel." +msgid "Screen UV coordinate for the current pixel." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:356 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:427 msgid "sampler2D **DEPTH_TEXTURE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:356 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:427 msgid "" "Removed in Godot 4. Use a ``sampler2D`` with ``hint_depth_texture`` instead." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:358 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:429 msgid "out float **DEPTH**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:358 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:429 msgid "" -"Custom depth value (range of ``[0.0, 1.0]``). If ``DEPTH`` is being written " -"to in any shader branch, then you are responsible for setting the ``DEPTH`` " -"for **all** other branches. Otherwise, the graphics API will leave them " -"uninitialized." +"Custom depth value (range ``[0.0, 1.0]``). If ``DEPTH`` is written to in any " +"shader branch, then you are responsible for setting ``DEPTH`` for **all** " +"other branches. Otherwise, the graphics API will leave them uninitialized." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:362 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:433 msgid "" "Normal that comes from the ``vertex()`` function, in view space. If " "``skip_vertex_transform`` is enabled, it may not be in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:365 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:436 msgid "" "Tangent that comes from the ``vertex()`` function, in view space. If " "``skip_vertex_transform`` is enabled, it may not be in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:368 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:439 msgid "" "Binormal that comes from the ``vertex()`` function, in view space. If " "``skip_vertex_transform`` is enabled, it may not be in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:371 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:442 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:258 msgid "out vec3 **NORMAL_MAP**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:371 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:442 msgid "Set normal here if reading normal from a texture instead of ``NORMAL``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:373 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:444 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:261 msgid "out float **NORMAL_MAP_DEPTH**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:373 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:444 msgid "Depth from ``NORMAL_MAP``. Defaults to ``1.0``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:375 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:78 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:446 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:77 msgid "out vec3 **ALBEDO**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:375 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:446 msgid "Albedo (default white). Base color." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:377 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:535 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:448 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:606 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:214 msgid "out float **ALPHA**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:377 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:448 msgid "" -"Alpha (range of ``[0.0, 1.0]``). If read from or written to, the material " -"will go to the transparent pipeline." +"Alpha (range ``[0.0, 1.0]``). If read from or written to, the material will " +"go to the transparent pipeline." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:380 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:451 msgid "out float **ALPHA_SCISSOR_THRESHOLD**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:380 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:451 msgid "If written to, values below a certain amount of alpha are discarded." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:382 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:453 msgid "out float **ALPHA_HASH_SCALE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:382 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:453 msgid "" "Alpha hash scale when using the alpha hash transparency mode. Defaults to " "``1.0``. Higher values result in more visible pixels in the dithering " "pattern." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:385 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:456 msgid "out float **ALPHA_ANTIALIASING_EDGE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:385 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:456 msgid "" "The threshold below which alpha to coverage antialiasing should be used. " "Defaults to ``0.0``. Requires the ``alpha_to_coverage`` render mode. Should " "be set to a value lower than ``ALPHA_SCISSOR_THRESHOLD`` to be effective." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:389 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:460 msgid "out vec2 **ALPHA_TEXTURE_COORDINATE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:389 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:460 msgid "" "The texture coordinate to use for alpha-to-coverge antialiasing. Requires " "the ``alpha_to_coverage`` render mode. Typically set to ``UV * " @@ -133529,11 +135753,11 @@ msgid "" "albedo texture in pixels." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:393 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:464 msgid "out float **PREMUL_ALPHA_FACTOR**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:393 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:464 msgid "" "Premultiplied alpha factor. Only effective if ``render_mode " "blend_premul_alpha;`` is used. This should be written to when using a " @@ -133541,127 +135765,127 @@ msgid "" "lighting. This is not required for unshaded materials." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:397 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:468 msgid "out float **METALLIC**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:397 -msgid "Metallic (range of ``[0.0, 1.0]``)." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:468 +msgid "Metallic (range ``[0.0, 1.0]``)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:399 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:470 msgid "out float **SPECULAR**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:399 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:470 msgid "" "Specular (not physically accurate to change). Defaults to ``0.5``. ``0.0`` " "disables reflections." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:401 -msgid "Roughness (range of ``[0.0, 1.0]``)." +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:472 +msgid "Roughness (range ``[0.0, 1.0]``)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:403 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:474 msgid "out float **RIM**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:403 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:474 msgid "" -"Rim (range of ``[0.0, 1.0]``). If used, Godot calculates rim lighting. Rim " -"size depends on ``ROUGHNESS``." +"Rim (range ``[0.0, 1.0]``). If used, Godot calculates rim lighting. Rim size " +"depends on ``ROUGHNESS``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:406 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:477 msgid "out float **RIM_TINT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:406 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:477 msgid "" -"Rim Tint, range of ``0.0`` (white) to ``1.0`` (albedo). If used, Godot " +"Rim Tint, range from ``0.0`` (white) to ``1.0`` (albedo). If used, Godot " "calculates rim lighting." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:408 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:479 msgid "out float **CLEARCOAT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:408 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:479 msgid "" "Small specular blob added on top of the existing one. If used, Godot " "calculates clearcoat." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:410 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:481 msgid "out float **CLEARCOAT_GLOSS**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:410 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:481 msgid "Gloss of clearcoat. If used, Godot calculates clearcoat." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:412 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:483 msgid "out float **ANISOTROPY**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:412 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:483 msgid "For distorting the specular blob according to tangent space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:414 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:485 msgid "out vec2 **ANISOTROPY_FLOW**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:414 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:485 msgid "Distortion direction, use with flowmaps." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:416 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:487 msgid "out float **SSS_STRENGTH**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:416 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:487 msgid "" "Strength of subsurface scattering. If used, subsurface scattering will be " "applied to the object." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:418 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:489 msgid "out vec4 **SSS_TRANSMITTANCE_COLOR**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:418 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:489 msgid "" "Color of subsurface scattering transmittance. If used, subsurface scattering " "transmittance will be applied to the object." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:421 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:492 msgid "out float **SSS_TRANSMITTANCE_DEPTH**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:421 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:492 msgid "" "Depth of subsurface scattering transmittance. Higher values allow the effect " "to reach deeper into the object." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:424 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:495 msgid "out float **SSS_TRANSMITTANCE_BOOST**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:424 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:495 msgid "" "Boosts the subsurface scattering transmittance if set above ``0.0``. This " "makes the effect show up even on directly lit surfaces" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:427 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:498 msgid "inout vec3 **BACKLIGHT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:427 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:498 msgid "" "Color of backlighting (works like direct light, but it's received even if " "the normal is slightly facing away from the light). If used, backlighting " @@ -133669,65 +135893,65 @@ msgid "" "subsurface scattering." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:431 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:502 msgid "out float **AO**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:431 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:502 msgid "Strength of ambient occlusion. For use with pre-baked AO." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:433 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:504 msgid "out float **AO_LIGHT_AFFECT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:433 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:504 msgid "" -"How much ambient occlusion affects direct light (range of ``[0.0, 1.0]``, " +"How much ambient occlusion affects direct light (range ``[0.0, 1.0]``, " "default ``0.0``)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:435 -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:84 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:506 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:83 msgid "out vec3 **EMISSION**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:435 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:506 msgid "Emission color (can go over ``(1.0, 1.0, 1.0)`` for HDR)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:437 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:508 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:216 msgid "out vec4 **FOG**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:437 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:508 msgid "" "If written to, blends final pixel color with ``FOG.rgb`` based on ``FOG.a``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:439 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:510 msgid "out vec4 **RADIANCE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:439 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:510 msgid "" "If written to, blends environment map radiance with ``RADIANCE.rgb`` based " "on ``RADIANCE.a``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:441 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:512 msgid "out vec4 **IRRADIANCE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:441 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:512 msgid "" "If written to, blends environment map irradiance with ``IRRADIANCE.rgb`` " "based on ``IRRADIANCE.a``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:447 -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:541 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:518 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:612 msgid "" "Shaders going through the transparent pipeline when ``ALPHA`` is written to " "may exhibit transparency sorting issues. Read the :ref:`transparency sorting " @@ -133736,12 +135960,12 @@ msgid "" "and ways to avoid issues." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:453 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:524 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:275 msgid "Light built-ins" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:455 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:526 msgid "" "Writing light processor functions is completely optional. You can skip the " "``light()`` function by using the ``unshaded`` render mode. If no light " @@ -133750,25 +135974,25 @@ msgid "" "the render mode)." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:459 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:530 msgid "" "The ``light()`` function is called for every light in every pixel. It is " "called within a loop for each light type." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:461 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:532 msgid "" "Below is an example of a custom ``light()`` function using a Lambertian " "lighting model:" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:469 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:540 msgid "" "If you want the lights to add together, add the light contribution to " "``DIFFUSE_LIGHT`` using ``+=``, rather than overwriting it." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:473 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:544 msgid "" "The ``light()`` function won't be run if the ``vertex_lighting`` render mode " "is enabled, or if :ref:`Rendering > Quality > Shading > Force Vertex " @@ -133777,39 +136001,39 @@ msgid "" "default on mobile platforms.)" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:482 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:553 msgid "" "Coordinate of pixel center in screen space. ``xy`` specifies position in " "window, ``z`` specifies fragment depth if ``DEPTH`` is not used. Origin is " "lower-left." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:497 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:568 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:305 msgid "in vec3 **NORMAL**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:497 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:568 msgid "Normal vector, in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:505 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:576 msgid "View vector, in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:507 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:578 msgid "in vec3 **LIGHT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:507 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:578 msgid "Light vector, in view space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:509 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:580 msgid "in vec3 **LIGHT_COLOR**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:509 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:580 msgid "" ":ref:`Light color` multiplied " "by :ref:`light energy` multiplied by " @@ -133817,85 +136041,85 @@ msgid "" "lighting models include a division by ``PI``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:514 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:585 msgid "in float **SPECULAR_AMOUNT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:514 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:585 msgid "" "For :ref:`class_OmniLight3D` and :ref:`class_SpotLight3D`, ``2.0`` " "multiplied by :ref:`light_specular`. " "For :ref:`class_DirectionalLight3D`, ``1.0``." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:519 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:590 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:334 msgid "in bool **LIGHT_IS_DIRECTIONAL**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:519 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:590 msgid "``true`` if this pass is a :ref:`class_DirectionalLight3D`." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:521 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:592 msgid "in float **ATTENUATION**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:521 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:592 msgid "Attenuation based on distance or shadow." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:523 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:594 msgid "in vec3 **ALBEDO**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:523 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:594 msgid "Base albedo." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:525 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:596 msgid "in vec3 **BACKLIGHT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:527 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:598 msgid "in float **METALLIC**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:527 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:598 msgid "Metallic." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:529 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:600 msgid "in float **ROUGHNESS**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:529 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:600 msgid "Roughness." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:531 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:602 msgid "out vec3 **DIFFUSE_LIGHT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:531 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:602 msgid "Diffuse light result." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:533 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:604 msgid "out vec3 **SPECULAR_LIGHT**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:533 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:604 msgid "Specular light result." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:535 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:606 msgid "" -"Alpha (range of ``[0.0, 1.0]``). If written to, the material will go to the " +"Alpha (range ``[0.0, 1.0]``). If written to, the material will go to the " "transparent pipeline." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:546 +#: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:617 msgid "" "Transparent materials also cannot cast shadows or appear in " "``hint_screen_texture`` and ``hint_depth_texture`` uniforms. This in turn " @@ -133943,7 +136167,7 @@ msgid "**light_only**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:33 -msgid "Only draw on light pass." +msgid "Only draw in the light pass." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:35 @@ -133988,8 +136212,8 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:113 msgid "" "World space to canvas space transform. In canvas space the origin is the " -"upper-left corner of the screen and coordinates ranging from ``(0.0, 0.0)`` " -"to viewport size." +"upper-left corner of the screen and coordinates range from ``(0.0, 0.0)`` to " +"viewport size." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:118 @@ -133998,8 +136222,8 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:118 msgid "" -"Canvas space to clip space. In clip space coordinates ranging from ``(-1.0, " -"-1.0)`` to ``(1.0, 1.0).``" +"Canvas space to clip space transform. In clip space coordinates range from " +"``(-1.0, -1.0)`` to ``(1.0, 1.0).``" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:122 @@ -134028,8 +136252,9 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:128 msgid "" -"Normalized pixel size of default 2D texture. For a Sprite2D with a texture " -"of size 64x32px, **TEXTURE_PIXEL_SIZE** = ``vec2(1/64, 1/32)``" +"Normalized pixel size of the default 2D texture. For a Sprite2D with a " +"texture of size 64x32px, **TEXTURE_PIXEL_SIZE** = ``vec2(1.0/64.0, " +"1.0/32.0)``" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:132 @@ -134047,7 +136272,7 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:140 msgid "" -"Color from vertex primitive multiplied by " +"Color from vertex primitive multiplied by the " "CanvasItem's :ref:`modulate` multiplied " "by " "CanvasItem's :ref:`self_modulate`." @@ -134136,7 +136361,7 @@ msgid "in vec2 **SCREEN_PIXEL_SIZE**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:224 -msgid "Size of individual pixels. Equal to inverse of resolution." +msgid "Size of individual pixels. Equal to the inverse of resolution." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:226 @@ -134164,8 +136389,8 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:234 msgid "" -"Normalized pixel size of default 2D texture. For a Sprite2D with a texture " -"of size 64x32px, ``TEXTURE_PIXEL_SIZE`` = ``vec2(1/64, 1/32)``" +"Normalized pixel size of the default 2D texture. For a Sprite2D with a " +"texture of size 64x32px, ``TEXTURE_PIXEL_SIZE`` = ``vec2(1/64, 1/32)``" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:240 @@ -134187,7 +136412,7 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:244 msgid "" -"UV from the ``vertex()`` function. For Sprite2D with region enabled, this " +"UV from the ``vertex()`` function. For a Sprite2D with region enabled, this " "will sample the entire texture. Use ``REGION_RECT`` instead to sample only " "the region defined in the Sprite2D's properties." msgstr "" @@ -134280,7 +136505,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:312 -msgid "Current texture in use for CanvasItem." +msgid "Current texture in use for the CanvasItem." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:314 @@ -134372,9 +136597,10 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:348 msgid "" "There are a few additional functions implemented to sample an automatically " -"generated Signed Distance Field texture. These functions available for the " -"``fragment()`` and ``light()`` functions of CanvasItem shaders. Custom " -"functions may also use them as long as they called from supported functions." +"generated Signed Distance Field texture. These functions are available in " +"the ``fragment()`` and ``light()`` functions of CanvasItem shaders. Custom " +"functions may also use them as long as they are called from supported " +"functions." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:353 @@ -134426,7 +136652,7 @@ msgstr "" msgid "" "Particle shaders are a special type of shader that runs before the object is " "drawn. They are used for calculating material properties such as color, " -"position, and rotation. They are drawn with any regular material for " +"position, and rotation. They can be drawn with any regular material for " "CanvasItem or Spatial, depending on whether they are 2D or 3D." msgstr "" @@ -134555,12 +136781,12 @@ msgid "inout bool **ACTIVE**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:98 -msgid "``true`` when the particle is active, can be set ``false``." +msgid "``true`` when the particle is active, can be set to ``false``." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:100 msgid "" -"Particle color, can be written to and accessed in mesh's vertex function." +"Particle color, can be written to and accessed in the mesh's vertex function." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:102 @@ -134585,7 +136811,8 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:106 msgid "" -"Custom particle data. Accessible from shader of mesh as ``INSTANCE_CUSTOM``." +"Custom particle data. Accessible from the mesh's shader as " +"``INSTANCE_CUSTOM``." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:108 @@ -134593,9 +136820,7 @@ msgid "inout float **MASS**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:108 -msgid "" -"Particle mass, intended to be used with attractors. Equals ``1.0`` by " -"default." +msgid "Particle mass, intended to be used with attractors. ``1.0`` by default." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:110 @@ -134615,7 +136840,7 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:113 msgid "" -"A flag for using on the last argument of ``emit_subparticle()`` function to " +"A flag for the last argument of the ``emit_subparticle()`` function to " "assign a position to a new particle's transform." msgstr "" @@ -134625,8 +136850,8 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:115 msgid "" -"A flag for using on the last argument of ``emit_subparticle()`` function to " -"assign the rotation and scale to a new particle's transform." +"A flag for the last argument of the ``emit_subparticle()`` function to " +"assign a rotation and scale to a new particle's transform." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:117 @@ -134635,7 +136860,7 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:117 msgid "" -"A flag for using on the last argument of ``emit_subparticle()`` function to " +"A flag for the last argument of the ``emit_subparticle()`` function to " "assign a velocity to a new particle." msgstr "" @@ -134645,7 +136870,7 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:119 msgid "" -"A flag for using on the last argument of ``emit_subparticle()`` function to " +"A flag for the last argument of the ``emit_subparticle()`` function to " "assign a color to a new particle." msgstr "" @@ -134655,7 +136880,7 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:121 msgid "" -"A flag for using on the last argument of ``emit_subparticle()`` function to " +"A flag for the last argument of the ``emit_subparticle()`` function to " "assign a custom data vector to a new particle." msgstr "" @@ -134675,8 +136900,9 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:125 msgid "" -"Value of :ref:`interp_to_end` " -"(:ref:`3D`) property of " +"Value of " +"the :ref:`interp_to_end` " +"(:ref:`3D`) property of the " "Particles node." msgstr "" @@ -134686,8 +136912,8 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:128 msgid "" -"Value of :ref:`amount_ratio` " -"(:ref:`3D`) property of " +"Value of the :ref:`amount_ratio` " +"(:ref:`3D`) property of the " "Particles node." msgstr "" @@ -134766,7 +136992,7 @@ msgid "in bool **RESTART**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:158 -msgid "``true`` if the current process frame is first for the particle." +msgid "``true`` if the current process frame is the first for the particle." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:160 @@ -134793,8 +137019,8 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:164 msgid "" -"A length of normal of the last collision. If there is no collision detected " -"it is equal to ``0.0``." +"A length of the normal of the last collision. If there is no collision " +"detected it is equal to ``0.0``." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:166 @@ -134812,7 +137038,7 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:172 msgid "" "``emit_subparticle()`` is currently the only custom function supported by " -"particles shaders. It allows users to add a new particle with specified " +"particle shaders. It allows users to add a new particle with specified " "parameters from a sub-emitter. The newly created particle will only use the " "properties that match the ``flags`` parameter. For example, the following " "code will emit a particle with a specified position, velocity, and color, " @@ -135012,7 +137238,7 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:167 msgid "" -"Radiance cubemap. Can only be read from during background pass. Check ``!" +"Radiance cubemap. Can only be read from during the background pass. Check ``!" "AT_CUBEMAP_PASS`` before using." msgstr "" @@ -135021,7 +137247,7 @@ msgid "in bool **AT_HALF_RES_PASS**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:169 -msgid "``true`` when rendering to half resolution pass." +msgid "``true`` when rendering to the half resolution pass." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:171 @@ -135029,7 +137255,7 @@ msgid "in bool **AT_QUARTER_RES_PASS**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:171 -msgid "``true`` when rendering to quarter resolution pass." +msgid "``true`` when rendering to the quarter resolution pass." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:173 @@ -135037,7 +137263,7 @@ msgid "in bool **AT_CUBEMAP_PASS**" msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:173 -msgid "``true`` when rendering to radiance cubemap." +msgid "``true`` when rendering to the radiance cubemap." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:175 @@ -135094,14 +137320,14 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:202 msgid "" -"Normalized direction of current pixel. Use this as your basic direction for " -"procedural effects." +"Normalized direction of the current pixel. Use this as your basic direction " +"for procedural effects." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:204 msgid "" -"Screen UV coordinate for current pixel. Used to map a texture to the full " -"screen." +"Screen UV coordinate for the current pixel. Used to map a texture to the " +"full screen." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:206 @@ -135118,8 +137344,8 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:208 msgid "" -"Color value of corresponding pixel from half resolution pass. Uses linear " -"filter." +"Color value of the corresponding pixel from the half resolution pass. Uses " +"linear filter." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:210 @@ -135128,8 +137354,8 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:210 msgid "" -"Color value of corresponding pixel from quarter resolution pass. Uses linear " -"filter." +"Color value of the corresponding pixel from the quarter resolution pass. " +"Uses linear filter." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:212 @@ -135150,10 +137376,10 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:6 msgid "" -"Fog shaders are used to define how fog is added (or subtracted) from a scene " -"in a given area. Fog shaders are always used together with :ref:`FogVolumes " -"` and volumetric fog. Fog shaders only have one processing " -"function, the ``fog()`` function." +"Fog shaders are used to define how fog is added to (or subtracted from) a " +"scene in a given area. Fog shaders are always used together " +"with :ref:`FogVolumes ` and volumetric fog. Fog shaders " +"only have one processing function, the ``fog()`` function." msgstr "" #: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:11 @@ -135167,88 +137393,88 @@ msgstr "" #: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:16 msgid "" "Fog shaders are a special form of compute shader that is called once for " -"every froxel that is touched by an axis aligned bounding box of the " +"every froxel that is touched by an axis-aligned bounding box of the " "associated :ref:`FogVolume `. This means that froxels that " "just barely touch a given :ref:`FogVolume ` will still be " "used." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:57 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:56 msgid "Fog built-ins" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:59 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:58 msgid "" "All of the output values of fog volumes overlap one another. This " "allows :ref:`FogVolumes ` to be rendered efficiently as " "they can all be drawn at once." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:66 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:65 msgid "in vec3 **WORLD_POSITION**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:66 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:65 msgid "Position of current froxel cell in world space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:68 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:67 msgid "in vec3 **OBJECT_POSITION**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:68 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:67 msgid "" "Position of the center of the current :ref:`FogVolume ` in " "world space." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:70 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:69 msgid "in vec3 **UVW**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:70 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:69 msgid "" "3-dimensional UV, used to map a 3D texture to the current :ref:`FogVolume " "`." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:72 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:71 msgid "in vec3 **SIZE**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:72 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:71 msgid "" "Size of the current :ref:`FogVolume ` when " "its :ref:`shape` has a size." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:75 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:74 msgid "in vec3 **SDF**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:75 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:74 msgid "" "Signed distance field to the surface of the :ref:`FogVolume " "`. Negative if inside volume, positive otherwise." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:78 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:77 msgid "" "Output base color value, interacts with light to produce final color. Only " "written to fog volume if used." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:81 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:80 msgid "out float **DENSITY**" msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:81 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:80 msgid "" "Output density value. Can be negative to allow subtracting one volume from " "another. Density must be used for fog shader to write anything at all." msgstr "" -#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:84 +#: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:83 msgid "" "Output emission color value, added to color during light pass to produce " "final color. Only written to fog volume if used." @@ -136655,7 +138881,7 @@ msgid "Vector is a set of values." msgstr "" #: ../../docs/tutorials/shaders/visual_shaders.rst:142 -#: ../../docs/engine_details/architecture/core_types.rst:147 +#: ../../docs/engine_details/architecture/core_types.rst:66 msgid "|vector|" msgstr "" @@ -139628,7 +141854,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/ui/custom_gui_controls.rst:159 -#: ../../docs/engine_details/architecture/object_class.rst:245 +#: ../../docs/engine_details/architecture/object_class.rst:343 msgid "Notifications" msgstr "" @@ -140541,7 +142767,7 @@ msgid "Web Open Font Format 1 (``.woff``)" msgstr "" #: ../../docs/tutorials/ui/gui_using_fonts.rst:57 -msgid "Web Open Font Format 2 (``.woff2``, since Godot 3.5)" +msgid "Web Open Font Format 2 (``.woff2``)" msgstr "" #: ../../docs/tutorials/ui/gui_using_fonts.rst:59 @@ -143476,8 +145702,8 @@ msgstr "" #: ../../docs/tutorials/ui/bbcode_in_richtextlabel.rst:996 msgid "" "BBCode can also be used to create different text effects that can optionally " -"be animated. Five customizable effects are provided out of the box, and you " -"can easily create your own. By default, animated effects will " +"be animated. Several customizable effects are provided out of the box, and " +"you can easily create your own. By default, animated effects will " "pause :ref:`when the SceneTree is paused `. You can " "change this behavior by adjusting the RichTextLabel's **Process > Mode** " "property." @@ -143766,7 +145992,7 @@ msgstr "" msgid "Basic Tutorial" msgstr "" -#: ../../docs/tutorials/xr/index.rst:39 +#: ../../docs/tutorials/xr/index.rst:40 msgid "Godot XR Tools" msgstr "" @@ -143891,7 +146117,7 @@ msgstr "" #: ../../docs/tutorials/xr/setting_up_xr.rst:48 msgid "" "OpenXR is a new industry standard that allows different XR platforms to " -"present themselves through a standardised API to XR applications. This " +"present themselves through a standardized API to XR applications. This " "standard is an open standard maintained by the Khronos Group and thus aligns " "very well with Godot's interests." msgstr "" @@ -144066,7 +146292,7 @@ msgid "" "when you've finished these steps." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:19 +#: ../../docs/tutorials/xr/deploying_to_android.rst:20 msgid "" "While the Mobile Vulkan renderer has many optimizations targeted at mobile " "devices, we're still working out the kinks. It is highly advisable to use " @@ -144074,11 +146300,11 @@ msgid "" "Android based XR devices." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:23 +#: ../../docs/tutorials/xr/deploying_to_android.rst:24 msgid "Gradle Android build" msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:26 +#: ../../docs/tutorials/xr/deploying_to_android.rst:28 msgid "" "Official support for the Android platform wasn't added to the OpenXR " "specification initially resulting in various vendors creating custom loaders " @@ -144087,17 +146313,17 @@ msgid "" "loaders need to be added to your project." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:29 +#: ../../docs/tutorials/xr/deploying_to_android.rst:31 msgid "" "In order to include the vendor-specific OpenXR loader into your project, you " "will need to setup a gradle Android build." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:31 +#: ../../docs/tutorials/xr/deploying_to_android.rst:33 msgid "Select **Install Android Build Template...** from the **Project** menu:" msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:35 +#: ../../docs/tutorials/xr/deploying_to_android.rst:37 msgid "" "This will create a folder called **android** inside of your project that " "contains all the runtime files needed on Android. You can now customize this " @@ -144105,23 +146331,23 @@ msgid "" "file browser." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:37 +#: ../../docs/tutorials/xr/deploying_to_android.rst:39 msgid "" "You can read more about gradle builds here: :ref:`doc_android_gradle_build`." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:40 +#: ../../docs/tutorials/xr/deploying_to_android.rst:42 msgid "Installing the vendors plugin" msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:42 +#: ../../docs/tutorials/xr/deploying_to_android.rst:44 msgid "" "The vendors plugin can be downloaded from the asset library, search for " "\"OpenXR vendors\" and install the one named \"Godot OpenXR Vendors plugin " "v4\"." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:47 +#: ../../docs/tutorials/xr/deploying_to_android.rst:49 msgid "" "You will find the installed files inside the **addons** folder. " "Alternatively you can manually install the vendors plugin by downloading it " @@ -144130,40 +146356,48 @@ msgid "" "folder from the zip file into your projects `addons` folder." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:52 +#: ../../docs/tutorials/xr/deploying_to_android.rst:54 msgid "" "You can find the main repository of the vendors plugin `here `__." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:55 +#: ../../docs/tutorials/xr/deploying_to_android.rst:58 +msgid "" +"From Godot 4.6 onwards, the vendor plugin is now an optional but recommended " +"plugin. Godot can export directly to most Android-compatible devices. This " +"can be useful for demonstration and tutorial projects where a single APK can " +"be deployed to multiple devices. The vendor plugin unlocks vendor specific " +"implementations and settings, and may be required to release on app stores." +msgstr "" + +#: ../../docs/tutorials/xr/deploying_to_android.rst:64 msgid "Creating the export presets" msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:56 +#: ../../docs/tutorials/xr/deploying_to_android.rst:65 msgid "" "You will need to setup a separate export preset for each device, as each " "device will need its own loader included." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:58 +#: ../../docs/tutorials/xr/deploying_to_android.rst:67 msgid "" "Open **Project** and select **Export..**. Click on **Add..** and select " "**Android**. Next change the name of the export preset for the device you're " -"setting this up for, say **Meta Quest**. And enable **Use Gradle Build**. If " -"you want to use one-click deploy (described below), ensure that **Runnable** " -"is enabled." +"setting this up for, say **Meta Quest**. And enable **Use Gradle Build**. " +"Next change the **XR Mode** to **OpenXR**. If you want to use one-click " +"deploy (described below), ensure that **Runnable** is enabled." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:64 +#: ../../docs/tutorials/xr/deploying_to_android.rst:74 msgid "" -"If the vendors plugins were installed correctly you should find entries for " -"the different headsets under **XR Features**. Change the **XR Mode** to " -"**OpenXR**, then select the entry for your headset if you see one. If you " -"don't see one enable the Khronos plugin." +"If you've installed the vendor plugin you will also find entries for the " +"different headsets under **XR Features**. Select the entry for your headset, " +"if you see one. Otherwise, enable the Khronos plugin." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:71 +#: ../../docs/tutorials/xr/deploying_to_android.rst:80 msgid "" "Scroll to the bottom of the list and you'll find additional XR feature " "sections, currently only **Meta XR Features**, **Pico XR Features**, " @@ -144172,25 +146406,25 @@ msgid "" "features." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:77 +#: ../../docs/tutorials/xr/deploying_to_android.rst:86 msgid "Running on your device from the Godot editor" msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:78 +#: ../../docs/tutorials/xr/deploying_to_android.rst:87 msgid "" "If you've setup your export settings as described above, and your headset is " "connected to your computer and correctly recognized, you can launch it " "directly from the Godot editor using :ref:`doc_one-click_deploy`:" msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:82 +#: ../../docs/tutorials/xr/deploying_to_android.rst:91 msgid "" "For some devices on some platforms, you may need to perform some extra steps " "in order for your device to be recognized correctly, so be sure to check the " "developer documentation from your headset vendor." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:84 +#: ../../docs/tutorials/xr/deploying_to_android.rst:93 msgid "" "For example, with the Meta Quest 2, you need to enable developer mode on the " "headset, and if you're on Windows, you'll need to install special ADB " @@ -144199,7 +146433,7 @@ msgid "" "for more details." msgstr "" -#: ../../docs/tutorials/xr/deploying_to_android.rst:86 +#: ../../docs/tutorials/xr/deploying_to_android.rst:95 msgid "" "If you're having any issues with one-click deploy, check " "the :ref:`Troubleshooting section `." @@ -144757,38 +146991,59 @@ msgid "" msgstr "" #: ../../docs/tutorials/xr/xr_next_steps.rst:13 -msgid "XR Toolkits" +msgid "Godot OpenXR vendor plugin" msgstr "" #: ../../docs/tutorials/xr/xr_next_steps.rst:15 msgid "" +"The vendor plugin isn't just for :ref:`deploying to Android " +"`. In the vendor plugin, we implement many OpenXR " +"vendor extensions that unlock unique features on certain devices, or " +"features that are new enough that a standardized implementation is not " +"available yet." +msgstr "" + +#: ../../docs/tutorials/xr/xr_next_steps.rst:19 +msgid "" +"Together with the OpenXR working group we maintain a `client support matrix " +"`_ that lists all the OpenXR extensions " +"Godot supports and whether they require the vendor plugin." +msgstr "" + +#: ../../docs/tutorials/xr/xr_next_steps.rst:24 +msgid "XR Toolkits" +msgstr "" + +#: ../../docs/tutorials/xr/xr_next_steps.rst:26 +msgid "" "There are various XR toolkits available that implement more complex XR logic " "ready for you to use. We have a :Ref:`small introduction to Godot XR Tools " "` that you can look at, a toolkit developed by core " "contributors of Godot." msgstr "" -#: ../../docs/tutorials/xr/xr_next_steps.rst:19 +#: ../../docs/tutorials/xr/xr_next_steps.rst:30 msgid "There are more toolkits available for Godot:" msgstr "" -#: ../../docs/tutorials/xr/xr_next_steps.rst:21 +#: ../../docs/tutorials/xr/xr_next_steps.rst:32 msgid "" "`Godot XR handtracking toolkit `_ (GDScript)" msgstr "" -#: ../../docs/tutorials/xr/xr_next_steps.rst:22 +#: ../../docs/tutorials/xr/xr_next_steps.rst:33 msgid "" "`Godot XR Kit `_ (GDScript)" msgstr "" -#: ../../docs/tutorials/xr/xr_next_steps.rst:23 +#: ../../docs/tutorials/xr/xr_next_steps.rst:34 msgid "" "`Godot XR Tools `_ (GDScript)" msgstr "" -#: ../../docs/tutorials/xr/xr_next_steps.rst:24 +#: ../../docs/tutorials/xr/xr_next_steps.rst:35 msgid "`NXR `_ (C#)" msgstr "" @@ -145598,7 +147853,7 @@ msgstr "" #: ../../docs/tutorials/xr/xr_action_map.rst:142 msgid "" "This is the internal name of the action set. OpenXR doesn't specify specific " -"restrictions on this name other then size, however some XR runtimes will not " +"restrictions on this name other than size, however some XR runtimes will not " "like spaces or special characters." msgstr "" @@ -148172,6 +150427,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/xr/openxr_render_models.rst:198 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:591 msgid "Backend access" msgstr "" @@ -148326,6 +150582,1120 @@ msgid "" "that can be directly applied." msgstr "" +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:4 +msgid "OpenXR spatial entities" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:6 +msgid "" +"For any sort of augmented reality application you need to access real world " +"information, and be able to track real world locations. OpenXR's spatial " +"entities API was introduced for this exact purpose." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:9 +msgid "" +"It has a very modular design. The core of the API defines how real world " +"entities are structured, how they are found, and how information about them " +"is stored and accessed." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:12 +msgid "" +"Various extensions are added on top, which implement specific systems such " +"as marker tracking, plane tracking, and anchors. These are referred to as " +"spatial capabilities." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:15 +msgid "" +"Each entity that can be handled by the system is broken up into smaller " +"components, which makes it easy to extend the system and add new " +"capabilities." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:18 +msgid "" +"Vendors have the ability to implement and expose additional capabilities and " +"component types that can be used with the core API. For Godot these can be " +"implemented in extensions. These implementations however fall outside of the " +"scope of this manual." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:22 +msgid "" +"Finally it is important to note that the spatial entity system makes use of " +"asynchronous functions. This means that you can start a process, and then " +"get informed of it finishing later on." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:28 +msgid "" +"In order to use spatial entities you need to enable the related project " +"settings. You can find these in the OpenXR section:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:33 +msgid "Spatial entity settings" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:36 +msgid "Setting" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:39 +msgid "" +"Enables the core of the spatial entities system. This must be enabled for " +"any of the spatial entities systems to work." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:41 +msgid "Enable spatial anchors" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:42 +msgid "" +"Enables the spatial anchors capability that allow creating and tracking " +"spatial anchors." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:43 +msgid "Enable persistent anchors" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:44 +msgid "" +"Enables the ability to make spatial anchors persistent. This means that " +"their location is stored and can be retrieved in subsequent sessions." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:46 +msgid "Enable built-in anchor detection" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:47 +msgid "" +"Enables our built-in anchor detection logic, this will automatically " +"retrieve persistent anchors and adjust the positioning of anchors when " +"tracking is updated." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:49 +msgid "Enable plane tracking" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:50 +msgid "" +"Enables the plane tracking capability that allows detection of surfaces such " +"as floors, walls, ceilings, and tables." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:52 +msgid "Enable built-in plane detection" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:53 +msgid "" +"Enables our built-in plane detection logic, this will automatically react to " +"new plane data becoming available." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:55 +msgid "Enable marker tracking" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:56 +msgid "" +"Enables our marker tracking capability that allows detection of markers such " +"as QR codes, Aruco markers, and April tags." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:58 +msgid "Enable built-in marker tracking" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:59 +msgid "" +"Enables our built-in marker detection logic, this will automatically react " +"to new markers being found or markers being moved around the player's space." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:64 +msgid "" +"Note that various XR devices also require permission flags to be set. These " +"will need to be enabled in the export preset settings." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:67 +msgid "" +"Enabling the different capabilities activates the related OpenXR APIs, but " +"additional logic is needed to interact with this data. For each core system " +"we have built-in logic that can be enabled that will do this for you." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:71 +msgid "" +"We'll discuss the spatial entities system under the assumption that the " +"built-in logic is enabled first. We will then take a look at the underlying " +"APIs and how you can implement this yourself, however it should be noted " +"that this is often overkill and that the underlying APIs are mostly exposed " +"to allow GDExtension plugins to implement additional capabilities." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:77 +msgid "Creating our spatial manager" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:79 +msgid "" +"When spatial entities are detected or created " +"an :ref:`OpenXRSpatialEntityTracker` " +"object is instantiated and registered with " +"the :ref:`XRServer`." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:83 +msgid "" +"Each type of spatial entity will implement its own subclass and we can thus " +"react differently to each type of entity." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:86 +msgid "" +"Generally speaking we will instance different subscenes for each type of " +"entity. As the tracker objects can be used " +"with :ref:`XRAnchor3D` nodes, these subscenes should have " +"such a node as their root node." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:90 +msgid "" +"All entity trackers will expose their location through the ``default`` pose." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:92 +msgid "" +"We can automate creating these subscenes and adding them to our scene tree " +"by creating a manager object. As all locations are local to " +"the :ref:`XROrigin3D` node, we should create our manager " +"as a child node of our origin node." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:96 +msgid "Below is the basis of the script that implements our manager logic:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:237 +msgid "Spatial anchors" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:239 +msgid "" +"Spatial anchors allow us to map real world locations in our virtual world in " +"such a way that the XR runtime will keep track of these locations and adjust " +"them as needed. If supported, anchors can be made persistent which means the " +"anchors will be recreated in the correct location when your application " +"starts again." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:244 +msgid "" +"You can think of use cases such as: - placing virtual windows around your " +"space that are recreated when your application restarts - placing virtual " +"objects on your table or on your walls and have them recreated" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:248 +msgid "" +"Spatial anchors are tracked " +"using :ref:`OpenXRAnchorTracker` objects " +"registered with the XRServer." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:251 +msgid "" +"When needed, the location of the spatial anchor will be updated " +"automatically; the pose on the related tracker will be updated and thus " +"the :ref:`XRAnchor3D` node will reposition." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:255 +msgid "" +"When a spatial anchor has been made persistent, a Universally Unique " +"Identifier (or UUID) is assigned to the anchor. You will need to store this " +"with whatever information you need to reconstruct the scene. In our example " +"code below we'll simply call ``set_scene_path`` and ``get_scene_path``, but " +"you will need to supply your own implementations for these functions." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:261 +msgid "" +"In order to create a persistent anchor you need to follow a specific flow: - " +"Create the spatial anchor - Wait until the tracking status changes to " +"``ENTITY_TRACKING_STATE_TRACKING`` - Make the anchor persistent - Obtain the " +"UUID and save it" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:267 +msgid "" +"When an existing persistent anchor is found a new tracker is added that has " +"the UUID already set. It is this difference in workflow that allows us to " +"correctly react to new and existing persistent anchors." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:273 +msgid "" +"If you unpersist an anchor, the UUID is destroyed but the anchor is not " +"removed automatically. You will need to react to the completion of " +"unpersisting an anchor and then clean it up. Also you will get an error if " +"you try to destroy an anchor that is still persistent." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:278 +msgid "" +"To complete our anchor system we start by creating a scene that we'll set as " +"the scene to instantiate for anchors on our spatial manager node." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:281 +msgid "" +"This scene should have an :ref:`XRAnchor3D` node as the " +"root but nothing else. We will add a script to it that will load a subscene " +"that contains the actual visual aspect of our anchor so we can create " +"different anchors in our scene. We'll assume the intention is to make these " +"anchors persistent and save the path to this subscene as metadata for our " +"UUID." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:373 +msgid "" +"With our anchor scene in place we can add a couple of functions to our " +"spatial manager script to create or remove anchors:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:449 +msgid "" +"There seems to be a bit of magic going on in the code above. Whenever a " +"spatial anchor is created or removed on our anchor capability, the related " +"tracker object is created or destroyed. This results in the spatial manager " +"adding or removing the child scene for this anchor. Hence we can rely on " +"this here." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:456 +msgid "Plane tracking" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:458 +msgid "" +"Plane tracking allows us to detect surfaces such as walls, floors, ceilings, " +"and tables in the player's vicinity. This data could come from a room " +"capture performed by the user at any time in the past, or detected live by " +"optical sensors. The plane tracking extension doesn't make a distinction " +"here." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:465 +msgid "" +"Some XR runtimes do require vendor extensions to enable and/or configure " +"this process but the data will be exposed through this extension." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:468 +msgid "" +"The code we wrote up above for the spatial manager will already detect our " +"new planes. We do need to set up a new scene and assign that scene to the " +"spatial manager." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:471 +msgid "" +"The root node for this scene must be an :ref:`XRAnchor3D` " +"node. We'll add a :ref:`StaticBody3D` node as a child " +"and add a :ref:`CollisionShape3D` " +"and :ref:`MeshInstance3D` node as children of the " +"static body." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:478 +msgid "" +"The static body and collision shape will allow us to make the plane " +"interactable." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:480 +msgid "" +"The mesh instance node allows us to apply a \"hole punch\" material to the " +"plane, when combined with passthrough this turns our plane into a visual " +"occluder. Alternatively we can assign a material that will visualize the " +"plane for debugging." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:484 +msgid "" +"We configure this material as the ``material_override`` material on our " +"MeshInstance3D. For our \"hole punch\" material, create " +"a :ref:`ShaderMaterial` and use the following code as " +"the shader code:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:497 +msgid "" +"We also need to add a script to our scene to ensure our collision and mesh " +"are applied." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:525 +msgid "" +"If supported by the XR runtime there is additional metadata you can query on " +"the plane tracker object. Of specific note is the ``plane_label`` property " +"that, if available, identifies the type of surface. Please consult " +"the :ref:`OpenXRPlaneTracker` class documentation " +"for further information." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:532 +msgid "Marker tracking" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:534 +msgid "" +"Marker tracking detects specific markers in the real world. These are " +"usually printed images such as QR codes." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:537 +msgid "" +"The API exposes support for 4 different codes, QR codes, Micro QR codes, " +"Aruco codes, and April tags, however XR runtimes are not required to support " +"them all." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:540 +msgid "" +"When markers are " +"detected, :ref:`OpenXRMarkerTracker` objects are " +"instantiated and registered with the XRServer." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:543 +msgid "" +"Our existing spatial manager code already detects these, all we need to do " +"is create a scene with an :ref:`XRAnchor3D` node at the " +"root, save this, and assign it to the spatial manager as the scene to " +"instantiate for markers." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:547 +msgid "" +"The marker tracker should be fully configured when assigned, so all that is " +"needed is a ``_ready`` function that reacts to the marker data. Below is a " +"template for the required code:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:584 +msgid "" +"As we can see, QR Codes provide a data block that is either a string or a " +"byte array. Aruco and April tags provide an ID that is read from the code." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:587 +msgid "" +"It's up to your use case how best to link the marker data to the scene that " +"needs to be loaded. An example would be to encode the name of the asset you " +"wish to display in a QR code." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:593 +msgid "" +"For most purposes the core system, along with any vendor extensions, should " +"be what most users would use as provided." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:596 +msgid "" +"For those who are implementing vendor extensions, or those for whom the " +"built-in logic doesn't suffice, backend access is provided through a set of " +"singleton objects." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:599 +msgid "" +"These objects can also be used to query what capabilities are supported by " +"the headset in use. We've already added code that checks for these in our " +"spatial manager and spatial anchor code in the sections above." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:605 +msgid "" +"The spatial entities system will encapsulate many OpenXR entities in " +"resources that are returned as RIDs." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:609 +msgid "Spatial entity core" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:611 +msgid "" +"The core spatial entity functionality is exposed through " +"the :ref:`OpenXRSpatialEntityExtension` " +"singleton." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:614 +msgid "" +"Specific logic is exposed through capabilities that introduce specialised " +"component types, and give access to specific types of entities, however they " +"all use the same mechanisms for accessing the entity data managed by the " +"spatial entity system." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:618 +msgid "" +"We'll start by having a look at the individual components that make up the " +"core system." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:621 +msgid "Spatial contexts" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:623 +msgid "" +"A spatial context is the main object through which we query the spatial " +"entities system. Spatial contexts allow us to configure how we interact with " +"one or more capabilities." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:626 +msgid "" +"It's recommended to create a spatial context for each capability that you " +"wish to interact with, in fact, this is what Godot does for its built-in " +"logic." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:629 +msgid "" +"We start by setting the capability configuration objects for the " +"capabilities we wish to access. Each capability will enable the components " +"we support for that capability. Settings can determine which components will " +"be enabled. We'll look at these configuration objects in more detail as we " +"look at each supported capability." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:635 +msgid "" +"Creating a spatial context is an asynchronous action. This means we ask the " +"XR runtime to create a spatial context, and at a point in the future the XR " +"runtime will provide us with the result." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:639 +msgid "" +"The following script is the start of our example and can be added as a node " +"to your scene. It shows the creation of a spatial context for plane " +"tracking, and sets up our entity discovery." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:708 +msgid "Discovery snapshots" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:710 +msgid "" +"Once our spatial context has been created the XR runtime will start managing " +"spatial entities according to the configuration of the specified " +"capabilities." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:713 +msgid "" +"In order to find new entities, or to get information about our current " +"entities, we can create a discovery snapshot. This will tell the XR runtime " +"to gather specific data related to all the spatial entities currently " +"managed by the spatial context." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:717 +msgid "" +"This function is asynchronous as it may take some time to gather this data " +"and offer its results. Generally speaking you will want to perform a " +"discovery snapshot when new entities are found. OpenXR emits an event when " +"there are new entities to be processed, this results in the " +"``spatial_discovery_recommended`` signal being emitted by " +"our :ref:`OpenXRSpatialEntityExtension` " +"singleton." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:723 +msgid "" +"Note in the example code shown above, we're already connecting to this " +"signal and calling the ``_on_perform_discovery`` method on our node. Let's " +"implement this:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:764 +msgid "" +"Note that when calling ``discover_spatial_entities`` we specify a list of " +"components. The discovery query will find any entity that is managed by the " +"spatial context and has at least one of the specified components." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:769 +msgid "Update snapshots" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:771 +msgid "" +"Performing an update snapshot allows us to get updated information about " +"entities we already found previously with our discovery snapshot. This " +"function is synchronous, and is mainly meant to obtain status and " +"positioning data and can be run every frame." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:776 +msgid "" +"Generally speaking you would only perform update snapshots when it's likely " +"entities change or have a lifetime process. A good example of this are " +"persistent anchors and markers. Consult the documentation about a capability " +"to determine if this is needed." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:780 +msgid "" +"It is not needed for plane tracking however to complete our example, here is " +"an example of what an update snapshot would look like for plane tracking if " +"we needed one:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:809 +msgid "" +"Note that in our example here we're using the same ``_process_snapshot`` " +"function to process the snapshot. This makes sense in most situations. " +"However if the components you've specified when creating the snapshot are " +"different between your discovery snapshot and your update snapshot, you have " +"to take the different components into account." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:815 +msgid "Querying snapshots" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:817 +msgid "" +"Once we have a snapshot we can run queries over that snapshot to obtain the " +"data held within. The snapshot is guaranteed to remain unchanged until you " +"free it." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:820 +msgid "" +"For each component we've added to our snapshot we have an accompanying data " +"object. This data object has a double function, adding it to your query " +"ensures we query that component type, and it is the object into which the " +"queried data is loaded." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:824 +msgid "" +"There is one special data object that must always be added to our request " +"list as the very first entry and that " +"is :ref:`OpenXRSpatialQueryResultData`. " +"This object will hold an entry for every returned entity with its unique ID " +"and the current state of the entity." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:829 +msgid "Completing our discovery logic we add the following:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:896 +msgid "" +"In the above example we're relying on ``ENTITY_TRACKING_STATE_STOPPED`` to " +"clean up spatial entities that are no longer being tracked. This is only " +"available with update snapshots." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:899 +msgid "" +"For capabilities that only rely on discovery snapshots you may wish to do a " +"cleanup based on entities that are no longer part of the snapshot instead of " +"relying on the state change." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:903 +msgid "Spatial entities" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:905 +msgid "" +"With the above information we now know how to query our spatial entities and " +"get information about them, but there is a little more we need to look at " +"when it comes to the entities themselves." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:908 +msgid "" +"In theory we're getting all our data from our snapshots, however OpenXR has " +"an extra API where we create a spatial entity object from our entity ID. " +"While this object exists the XR runtime knows that we are using this entity " +"and that the entity is not cleaned up early. This is a prerequisite for " +"performing an update query on this entity." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:914 +msgid "" +"In our example code we do so by calling " +"``OpenXRSpatialEntityExtension.make_spatial_entity``." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:916 +msgid "" +"Some spatial entity APIs will automatically create the object for us. In " +"this case we need to call " +"``OpenXRSpatialEntityExtension.add_spatial_entity`` to register the created " +"object with our implementation." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:920 +msgid "" +"Both functions return an RID that we can use in further functions that " +"require our entity object." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:922 +msgid "" +"When we're done we can call " +"``OpenXRSpatialEntityExtension.free_spatial_entity``." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:924 +msgid "" +"Note that we didn't do so in our example code. This is automatically handled " +"when our :ref:`OpenXRSpatialEntityTracker` " +"instance is destroyed." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:928 +msgid "Spatial anchor capability" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:930 +msgid "" +"Spatial anchors are managed by " +"our :ref:`OpenXRSpatialAnchorCapability` " +"singleton object. After the OpenXR session has been created you can call " +"``OpenXRSpatialAnchorCapability.is_spatial_anchor_supported`` to check if " +"the spatial anchor feature is supported on your hardware." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:935 +msgid "" +"The spatial anchor capability breaks the mold a little from what we've shown " +"above." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:937 +msgid "" +"The spatial anchor system allows us to identify, track, persist, and share a " +"physical location. What makes this different is that we're creating and " +"destroying the anchor and are thus managing its lifecycle." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:941 +msgid "" +"We thus only use the discovery system to discover anchors created and " +"persisted in previous sessions, or anchors shared with us." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:946 +msgid "" +"Sharing of anchors is currently not supported in the spatial entities " +"specification." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:948 +msgid "" +"As we showed in our example before we always start with creating a spatial " +"context but now using " +"the :ref:`OpenXRSpatialCapabilityConfigurationAnchor` " +"configuration object. We'll show an example of this code after we discuss " +"persistence scopes. First we'll look at managing local anchors." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:954 +msgid "" +"There is no difference in creating spatial anchors from what we've discussed " +"around the built-in logic. The only important thing is to pass your own " +"spatial context as a parameter to " +"``OpenXRSpatialAnchorCapability.create_new_anchor``." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:958 +msgid "" +"Making an anchor persistent requires you to wait until the anchor is " +"tracking, this means that you must perform update queries for any anchor you " +"create so you can process state changes." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:961 +msgid "" +"In order to enable making anchors persistent you also have to set up a " +"persistence scope. In the core of OpenXR two types of persistence scopes are " +"supported:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:964 +msgid "Persistence scopes" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:969 +msgid "PERSISTENCE_SCOPE_SYSTEM_MANAGED" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:970 +msgid "" +"Provides the application with read-only access (i.e. applications cannot " +"modify this store) to spatial entities persisted and managed by the system. " +"The application can use the UUID in the persistence component for this store " +"to correlate entities across spatial contexts and device reboots." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:974 +msgid "PERSISTENCE_SCOPE_LOCAL_ANCHORS" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:975 +msgid "" +"Persistence operations and data access is limited to spatial anchors, on the " +"same device, for the same user and app (using `persist_anchor` and " +"`unpersist_anchor` functions)" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:979 +msgid "" +"We'll start with a new script that handles our spatial anchors. It will be " +"similar to the script presented earlier but with a few differences." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:982 +msgid "The first being the creation of our persistence scope." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1064 +msgid "" +"With our persistence scope created, we can now create our spatial context." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1105 +msgid "" +"Creating our discovery snapshot for our anchors is nearly the same as we did " +"before, however it only makes sense to create our snapshot for persistent " +"anchors. We already know the anchors we created during our session, we just " +"want access to those coming from the XR runtime." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1109 +msgid "" +"We also want to perform regular update queries, here we are only interested " +"in the state so we do want to process our snapshot slightly differently." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1112 +msgid "The anchor system gives us access to two components:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1114 +msgid "Anchor components" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1117 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1282 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1615 +msgid "Component" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1118 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1283 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1616 +msgid "Data class" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1120 +msgid "COMPONENT_TYPE_ANCHOR" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1121 +msgid ":ref:`OpenXRSpatialComponentAnchorList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1122 +msgid "Provides us with the pose (location + orientation) of each anchor" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1123 +msgid "COMPONENT_TYPE_PERSISTENCE" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1124 +msgid ":ref:`OpenXRSpatialComponentPersistenceList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1125 +msgid "Provides us with the persistence state and UUID of each anchor" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1192 +msgid "" +"Finally we can process our snapshot. Note that we are " +"using :ref:`OpenXRAnchorTracker` as our tracker " +"class as this already has all the support for anchors built in." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1264 +msgid "Plane tracking capability" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1266 +msgid "" +"Plane tracking is handled by " +"the :ref:`OpenXRSpatialPlaneTrackingCapability` " +"singleton class." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1270 +msgid "" +"After the OpenXR session has been created you can call " +"``OpenXRSpatialPlaneTrackingCapability.is_supported`` to check if the plane " +"tracking feature is supported on your hardware." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1273 +msgid "" +"While we've provided most of the code for plane tracking up above, we'll " +"present the full implementation below as it has a few small tweaks. There is " +"no need to update snapshots here, we just do our discovery snapshot and " +"implement our process function." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1277 +msgid "" +"Plane tracking gives access to two components that are guaranteed to be " +"supported, and three optional components." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1279 +msgid "Plane tracking components" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1285 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1621 +msgid "COMPONENT_TYPE_BOUNDED_2D" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1286 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1622 +msgid ":ref:`OpenXRSpatialComponentBounded2DList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1287 +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1623 +msgid "Provides us with the center pose and bounding rectangle for each plane." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1288 +msgid "COMPONENT_TYPE_PLANE_ALIGNMENT" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1289 +msgid ":ref:`OpenXRSpatialComponentPlaneAlignmentList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1290 +msgid "Provides us with the alignment of each plane" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1291 +msgid "COMPONENT_TYPE_MESH_2D" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1292 +msgid ":ref:`OpenXRSpatialComponentMesh2DList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1293 +msgid "Provides us with a 2D mesh that shapes each plane" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1294 +msgid "COMPONENT_TYPE_POLYGON_2D" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1295 +msgid ":ref:`OpenXRSpatialComponentPolygon2DList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1296 +msgid "Provides us with a 2D polygon that shapes each plane" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1297 +msgid "COMPONENT_TYPE_PLANE_SEMANTIC_LABEL" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1298 +msgid ":ref:`OpenXRSpatialComponentPlaneSemanticLabelList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1299 +msgid "Provides us with a type identification of each plane" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1301 +msgid "" +"Our plane tracking configuration object already enables all supported " +"components, but we'll need to interrogate it so we'll store our instance in " +"a member variable. We can use " +"our :ref:`OpenXRPlaneTracker` tracker object to " +"store our component data." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1499 +msgid "Marker tracking capability" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1501 +msgid "" +"Marker tracking is handled by " +"the :ref:`OpenXRSpatialMarkerTrackingCapability` " +"singleton class." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1505 +msgid "" +"Marker tracking works similarly to plane tracking, however we're now " +"tracking specific entities in the real world based on some code printed on " +"an object like a piece of paper." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1508 +msgid "" +"There are various different marker tracking options. OpenXR supports 4 out " +"of the box, the following table provides more information and the function " +"name with which to check if your headset supports a given option:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1512 +msgid "Marker tracking options" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1516 +msgid "Check for support" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1517 +msgid "Configuration object" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1518 +msgid "April tag" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1519 +msgid "``april_tag_is_supported``" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1520 +msgid ":ref:`OpenXRSpatialCapabilityConfigurationAprilTag`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1521 +msgid "Aruco" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1522 +msgid "``aruco_is_supported``" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1523 +msgid ":ref:`OpenXRSpatialCapabilityConfigurationAruco`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1524 +msgid "QR code" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1525 +msgid "``qrcode_is_supported``" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1526 +msgid ":ref:`OpenXRSpatialCapabilityConfigurationQrCode`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1527 +msgid "Micro QR code" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1528 +msgid "``micro_qrcode_is_supported``" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1529 +msgid ":ref:`OpenXRSpatialCapabilityConfigurationMicroQrCode`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1531 +msgid "" +"Each option has its own configuration object that you can use when creating " +"a spatial entity." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1533 +msgid "" +"QR codes allow you to encode a string which is decoded by the XR runtime and " +"accessible when a marker is found. With April tags and Aruco markers, binary " +"data is encoded which you again can access when a marker is found, however " +"you need to configure the detection with the correct decoding format." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1537 +msgid "" +"As an example we'll create a spatial context that will find QR codes and " +"Aruco markers." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1610 +msgid "Every marker regardless of typer will consist of two components:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1612 +msgid "Marker tracking components" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1618 +msgid "COMPONENT_TYPE_MARKER" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1619 +msgid ":ref:`OpenXRSpatialComponentMarkerList`" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1620 +msgid "" +"Provides us with the type, ID (Aruco and April Tag), and/or data (QR Code) " +"for each marker." +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1625 +msgid "We add our discovery implementation:" +msgstr "" + +#: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1743 +msgid "And we add our update functionality:" +msgstr "" + #: ../../docs/tutorials/xr/introducing_xr_tools.rst:4 msgid "Introducing XR tools" msgstr "" @@ -148657,11 +152027,11 @@ msgid "" "at Godot XR Tools own help pages for details." msgstr "" -#: ../../docs/engine_details/architecture/index.rst:4 +#: ../../docs/engine_details/architecture/index.rst:6 msgid "Engine architecture" msgstr "" -#: ../../docs/engine_details/architecture/index.rst:6 +#: ../../docs/engine_details/architecture/index.rst:8 msgid "" "The following pages are meant to introduce the global organization of Godot " "Engine's source code, and give useful tips for extending and fixing the " @@ -148672,7 +152042,7 @@ msgstr "" msgid "Getting started with Godot's source code" msgstr "" -#: ../../docs/engine_details/architecture/index.rst:12 +#: ../../docs/engine_details/architecture/index.rst:14 msgid "" "This section covers the basics that you will encounter in (almost) every " "source file." @@ -148682,7 +152052,7 @@ msgstr "" msgid "Extending Godot by modifying its source code" msgstr "" -#: ../../docs/engine_details/architecture/index.rst:31 +#: ../../docs/engine_details/architecture/index.rst:33 msgid "" "This section covers what you can do by modifying Godot's C++ source code." msgstr "" @@ -148899,10 +152269,6 @@ msgid "" "github.com/godotengine/godot/blob/master/core/error/error_list.h>`__." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:4 -msgid "Core types" -msgstr "" - #: ../../docs/engine_details/architecture/core_types.rst:6 msgid "" "Godot has a rich set of classes and templates that compose its core, and " @@ -148915,225 +152281,101 @@ msgid "" msgstr "" #: ../../docs/engine_details/architecture/core_types.rst:13 -msgid "Definitions" +msgid "Allocating memory" msgstr "" #: ../../docs/engine_details/architecture/core_types.rst:15 msgid "" -"Godot uses the standard C99 datatypes, such as ``uint8_t``, ``uint32_t``, " -"``int64_t``, etc. which are nowadays supported by every compiler. " -"Reinventing the wheel for those is not fun, as it makes code more difficult " -"to read." +"Godot has many tricks for ensuring memory safety and tracking memory usage. " +"Because of this, the regular C and C++ library calls should not be used. " +"Instead, a few replacements are provided." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:20 -msgid "" -"In general, care is not taken to use the most efficient datatype for a given " -"task unless using large structures or arrays. ``int`` is used through most " -"of the code unless necessary. This is done because nowadays every device has " -"at least a 32-bit bus and can do such operations in one cycle. It makes code " -"more readable too." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:26 -msgid "" -"For files or memory sizes, ``size_t`` is used, which is guaranteed to be 64-" -"bit." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:29 -msgid "" -"For Unicode characters, CharType instead of wchar_t is used, because many " -"architectures have 4 bytes long wchar_t, where 2 bytes might be desired. " -"However, by default, this has not been forced and CharType maps directly to " -"wchar_t." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:34 -msgid "" -"`core/typedefs.h `__" -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:37 -msgid "Memory model" -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:39 -msgid "" -"PC is a wonderful architecture. Computers often have gigabytes of RAM, " -"terabytes of storage and gigahertz of CPU, and when an application needs " -"more resources the OS will swap out the inactive ones. Other architectures " -"(like mobile or consoles) are in general more limited." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:44 -msgid "" -"The most common memory model is the heap, where an application will request " -"a region of memory, and the underlying OS will try to fit it somewhere and " -"return it. This often works best and is flexible, but over time and with " -"abuse, this can lead to segmentation." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:49 -msgid "" -"Segmentation slowly creates holes that are too small for most common " -"allocations, so that memory is wasted. There is a lot of literature about " -"heap and segmentation, so this topic will not be developed further here. " -"Modern operating systems use paged memory, which helps mitigate the problem " -"of segmentation but doesn't solve it." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:55 -msgid "" -"However, in many studies and tests, it is shown that given enough memory, if " -"the maximum allocation size is below a given threshold in proportion to the " -"maximum heap size and proportion of memory intended to be unused, " -"segmentation will not be a problem over time as it will remain constant. In " -"other words, leave 10-20% of your memory free and perform all small " -"allocations and you are fine." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:62 -msgid "" -"Godot ensures that all objects that can be allocated dynamically are small " -"(less than a few kB at most). But what happens if an allocation is too large " -"(like an image or mesh geometry or large array)? In this case Godot has the " -"option to use a dynamic memory pool. This memory needs to be locked to be " -"accessed, and if an allocation runs out of memory, the pool will be " -"rearranged and compacted on demand. Depending on the need of the game, the " -"programmer can configure the dynamic memory pool size." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:71 -msgid "Allocating memory" -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:73 -msgid "" -"Godot has many tools for tracking memory usage in a game, especially during " -"debug. Because of this, the regular C and C++ library calls should not be " -"used. Instead, a few other ones are provided." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:77 +#: ../../docs/engine_details/architecture/core_types.rst:19 msgid "For C-style allocation, Godot provides a few macros:" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:85 +#: ../../docs/engine_details/architecture/core_types.rst:27 msgid "" "These are equivalent to the usual ``malloc()``, ``realloc()``, and " "``free()`` of the C standard library." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:88 +#: ../../docs/engine_details/architecture/core_types.rst:30 msgid "For C++-style allocation, special macros are provided:" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:98 +#: ../../docs/engine_details/architecture/core_types.rst:41 msgid "" "These are equivalent to ``new``, ``delete``, ``new[]``, and ``delete[]`` " "respectively." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:101 +#: ../../docs/engine_details/architecture/core_types.rst:44 msgid "" -"memnew/memdelete also use a little C++ magic and notify Objects right after " -"they are created, and right before they are deleted." +"``memnew``/``memdelete`` also use a little C++ magic to automatically call " +"post-init and pre-release functions. For example, this is used to notify " +"Objects right after they are created, and right before they are deleted." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:104 -msgid "" -"For dynamic memory, use one of Godot's sequence types such as ``Vector<>`` " -"or ``LocalVector<>``. ``Vector<>`` behaves much like an STL " -"``std::vector<>``, but is simpler and uses Copy-On-Write (CoW) semantics. " -"CoW copies of ``Vector<>`` can safely access the same data from different " -"threads, but several threads cannot access the same ``Vector<>`` instance " -"safely. It can be safely passed via public API if it has a ``Packed`` alias." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:111 -msgid "" -"The ``Packed*Array`` :ref:`types ` are aliases " -"for specific ``Vector<*>`` types (e.g., ``PackedByteArray``, " -"``PackedInt32Array``) that are accessible via GDScript. Outside of core, " -"prefer using the ``Packed*Array`` aliases for functions exposed to scripts, " -"and ``Vector<>`` for other occasions." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:117 -msgid "" -"``LocalVector<>`` is much more like ``std::vector`` than ``Vector<>``. It is " -"non-CoW, with less overhead. It is intended for internal use where the " -"benefits of CoW are not needed. Note that neither ``LocalVector<>`` nor " -"``Vector<>`` are drop-in replacements for each other. They are two unrelated " -"types with similar interfaces, both using a buffer as their storage strategy." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:124 -msgid "" -"``List<>`` is another Godot sequence type, using a doubly-linked list as its " -"storage strategy. Prefer ``Vector<>`` (or ``LocalVector<>``) over ``List<>`` " -"unless you're sure you need it, as cache locality and memory fragmentation " -"tend to be more important with small collections." -msgstr "" - -#: ../../docs/engine_details/architecture/core_types.rst:129 +#: ../../docs/engine_details/architecture/core_types.rst:48 msgid "" "`core/os/memory.h `__" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:132 +#: ../../docs/engine_details/architecture/core_types.rst:51 msgid "Containers" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:134 +#: ../../docs/engine_details/architecture/core_types.rst:53 msgid "" "Godot provides its own set of containers, which means STL containers like " "``std::string`` and ``std::vector`` are generally not used in the codebase. " "See :ref:`doc_faq_why_not_stl` for more information." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:137 +#: ../../docs/engine_details/architecture/core_types.rst:56 msgid "" "A 📜 icon denotes the type is part of :ref:`Variant `. " "This means it can be used as a parameter or return value of a method exposed " "to the scripting API." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:142 +#: ../../docs/engine_details/architecture/core_types.rst:61 +#: ../../docs/engine_details/architecture/core_types.rst:185 msgid "Godot datatype" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:142 +#: ../../docs/engine_details/architecture/core_types.rst:61 +#: ../../docs/engine_details/architecture/core_types.rst:185 msgid "Closest C++ STL datatype" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:144 +#: ../../docs/engine_details/architecture/core_types.rst:63 msgid "|string| 📜" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:144 -#: ../../docs/engine_details/architecture/core_types.rst:157 +#: ../../docs/engine_details/architecture/core_types.rst:63 +#: ../../docs/engine_details/architecture/core_types.rst:76 msgid "``std::string``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:144 +#: ../../docs/engine_details/architecture/core_types.rst:63 msgid "" "**Use this as the \"default\" string type.** ``String`` uses UTF-32 encoding " "to simplify processing thanks to its fixed character size." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:147 -#: ../../docs/engine_details/architecture/core_types.rst:160 -#: ../../docs/engine_details/architecture/core_types.rst:164 -#: ../../docs/engine_details/architecture/core_types.rst:168 -#: ../../docs/engine_details/architecture/core_types.rst:171 +#: ../../docs/engine_details/architecture/core_types.rst:66 +#: ../../docs/engine_details/architecture/core_types.rst:79 +#: ../../docs/engine_details/architecture/core_types.rst:83 +#: ../../docs/engine_details/architecture/core_types.rst:87 +#: ../../docs/engine_details/architecture/core_types.rst:90 msgid "``std::vector``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:147 +#: ../../docs/engine_details/architecture/core_types.rst:66 msgid "" "**Use this as the \"default\" vector type.** Uses copy-on-write (COW) " "semantics. This means it's generally slower but can be copied around almost " @@ -149141,30 +152383,30 @@ msgid "" "matters." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:151 +#: ../../docs/engine_details/architecture/core_types.rst:70 msgid "|hash_set|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:151 +#: ../../docs/engine_details/architecture/core_types.rst:70 msgid "``std::unordered_set``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:151 +#: ../../docs/engine_details/architecture/core_types.rst:70 msgid "**Use this as the \"default\" set type.**" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:153 +#: ../../docs/engine_details/architecture/core_types.rst:72 msgid "|a_hash_map|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:153 -#: ../../docs/engine_details/architecture/core_types.rst:195 -#: ../../docs/engine_details/architecture/core_types.rst:204 -#: ../../docs/engine_details/architecture/core_types.rst:208 +#: ../../docs/engine_details/architecture/core_types.rst:72 +#: ../../docs/engine_details/architecture/core_types.rst:114 +#: ../../docs/engine_details/architecture/core_types.rst:123 +#: ../../docs/engine_details/architecture/core_types.rst:127 msgid "``std::unordered_map``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:153 +#: ../../docs/engine_details/architecture/core_types.rst:72 msgid "" "**Use this as the \"default\" map type.** Does not preserve insertion order. " "Note that pointers into the map, as well as iterators, are not stable under " @@ -149172,98 +152414,98 @@ msgid "" "instead." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:157 +#: ../../docs/engine_details/architecture/core_types.rst:76 msgid "|string_name| 📜" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:157 +#: ../../docs/engine_details/architecture/core_types.rst:76 msgid "" "Uses string interning for fast comparisons. Use this for static strings that " "are referenced frequently and used in multiple locations in the engine." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:160 +#: ../../docs/engine_details/architecture/core_types.rst:79 msgid "|local_vector|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:160 +#: ../../docs/engine_details/architecture/core_types.rst:79 msgid "" "Closer to ``std::vector`` in semantics, doesn't use copy-on-write (COW) thus " "it's faster than ``Vector``. Prefer it over ``Vector`` when copying it " "cheaply is not needed." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:164 +#: ../../docs/engine_details/architecture/core_types.rst:83 msgid "|array| 📜" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:164 +#: ../../docs/engine_details/architecture/core_types.rst:83 msgid "" "Values can be of any Variant type. No static typing is imposed. Uses shared " "reference counting, similar to ``std::shared_ptr``. Uses Vector " "internally." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:168 +#: ../../docs/engine_details/architecture/core_types.rst:87 msgid "|typed_array| 📜" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:168 +#: ../../docs/engine_details/architecture/core_types.rst:87 msgid "" "Subclass of ``Array`` but with static typing for its elements. Not to be " "confused with ``Packed*Array``, which is internally a ``Vector``." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:171 +#: ../../docs/engine_details/architecture/core_types.rst:90 msgid "|packed_array| 📜" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:171 +#: ../../docs/engine_details/architecture/core_types.rst:90 msgid "" "Alias of ``Vector``, e.g. ``PackedColorArray = Vector``. Only a " "limited list of packed array types are available (use ``TypedArray`` " "otherwise)." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:175 +#: ../../docs/engine_details/architecture/core_types.rst:94 msgid "|list|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:175 +#: ../../docs/engine_details/architecture/core_types.rst:94 msgid "``std::list``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:175 +#: ../../docs/engine_details/architecture/core_types.rst:94 msgid "" "Linked list type. Generally slower than other array/vector types. Prefer " "using other types in new code, unless using ``List`` avoids the need for " "type conversions." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:178 +#: ../../docs/engine_details/architecture/core_types.rst:97 msgid "|fixed_vector|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:178 +#: ../../docs/engine_details/architecture/core_types.rst:97 msgid "``std::array``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:178 +#: ../../docs/engine_details/architecture/core_types.rst:97 msgid "" "Vector with a fixed capacity (more similar to " "``boost::container::static_vector``). This container type is more efficient " "than other vector-like types because it makes no heap allocations." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:182 +#: ../../docs/engine_details/architecture/core_types.rst:101 msgid "|span|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:182 +#: ../../docs/engine_details/architecture/core_types.rst:101 msgid "``std::span``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:182 +#: ../../docs/engine_details/architecture/core_types.rst:101 msgid "" "Represents read-only access to a contiguous array without needing to copy " "any data. Note that ``Span`` is designed to be a high performance API: It " @@ -149272,40 +152514,40 @@ msgid "" "constructed from most array-like containers (e.g. ``vector.span()``)." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:188 +#: ../../docs/engine_details/architecture/core_types.rst:107 msgid "|rb_set|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:188 +#: ../../docs/engine_details/architecture/core_types.rst:107 msgid "``std::set``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:188 +#: ../../docs/engine_details/architecture/core_types.rst:107 msgid "" "Uses a `red-black tree `__ for " "faster access." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:191 +#: ../../docs/engine_details/architecture/core_types.rst:110 msgid "|v_set|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:191 +#: ../../docs/engine_details/architecture/core_types.rst:110 msgid "``std::flat_set``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:191 +#: ../../docs/engine_details/architecture/core_types.rst:110 msgid "" "Uses copy-on-write (COW) semantics. This means it's generally slower but can " "be copied around almost for free. The performance benefits of ``VSet`` " "aren't established, so prefer using other types." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:195 +#: ../../docs/engine_details/architecture/core_types.rst:114 msgid "|hash_map|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:195 +#: ../../docs/engine_details/architecture/core_types.rst:114 msgid "" "Defensive (robust but slow) map type. Preserves insertion order. Pointers to " "keys and values, as well as iterators, are stable under mutation. Use this " @@ -149313,99 +152555,260 @@ msgid "" "otherwise." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:200 +#: ../../docs/engine_details/architecture/core_types.rst:119 msgid "|rb_map|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:200 +#: ../../docs/engine_details/architecture/core_types.rst:119 msgid "``std::map``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:200 +#: ../../docs/engine_details/architecture/core_types.rst:119 msgid "" "Map type that uses a `red-black tree `__ to find keys. The performance benefits of ``RBMap`` aren't " "established, so prefer using other types." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:204 +#: ../../docs/engine_details/architecture/core_types.rst:123 msgid "|dictionary| 📜" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:204 +#: ../../docs/engine_details/architecture/core_types.rst:123 msgid "" "Keys and values can be of any Variant type. No static typing is imposed. " "Uses shared reference counting, similar to ``std::shared_ptr``. Preserves " "insertion order. Uses ``HashMap`` internally." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:208 +#: ../../docs/engine_details/architecture/core_types.rst:127 msgid "|typed_dictionary| 📜" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:208 +#: ../../docs/engine_details/architecture/core_types.rst:127 msgid "" "Subclass of ``Dictionary`` but with static typing for its keys and values." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:210 +#: ../../docs/engine_details/architecture/core_types.rst:129 msgid "|pair|" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:210 +#: ../../docs/engine_details/architecture/core_types.rst:129 msgid "``std::pair``" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:210 +#: ../../docs/engine_details/architecture/core_types.rst:129 msgid "" "Stores a single pair. See also ``KeyValue`` in the same file, which uses " "read-only keys." msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:235 +#: ../../docs/engine_details/architecture/core_types.rst:154 +msgid "Relocation safety" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:156 +msgid "" +"Godot's containers assume their elements are `trivially relocatable `__." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:158 +msgid "" +"This means that, if you store data types in it that have pointers to " +"themselves, or are otherwise `not trivially relocatable `__, Godot might crash. Note that storing **pointers to** objects " +"that are not trivially relocatable, such as some Object subclasses, is " +"unproblematic and supported." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:163 +msgid "" +"The reason to assume trivial relocatability is that it allows us to make use " +"of important optimization techniques, such as relocation by ``memcpy`` or " +"``realloc``." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:166 +msgid "" +"`GH-100509 `__ tracks " +"this decision." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:171 +msgid "Multithreading / Concurrency" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:175 +msgid "" +"You can find more information on multithreading strategies " +"at :ref:`doc_using_multiple_threads`." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:177 +msgid "" +"None of Godot's containers are thread-safe. When you expect multiple threads " +"to access them, you must use multithread protections." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:180 +msgid "" +"Note that some of the types listed here are also available through the " +"bindings, but the binding types are wrapped with :ref:`class_RefCounted` " +"(found in the ``CoreBind::`` namespace). Prefer the primitives listed here " +"when possible, for efficiency reasons." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:187 +msgid "|mutex|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:187 +msgid "``std::recursive_mutex``" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:187 +msgid "Recursive mutex type. Use ``MutexLock lock(mutex)`` to lock it." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:189 +msgid "|binary_mutex|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:189 +#: ../../docs/engine_details/architecture/core_types.rst:194 +msgid "``std::mutex``" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:189 +msgid "Non-recursive mutex type. Use ``MutexLock lock(mutex)`` to lock it." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:191 +msgid "|rw_lock|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:191 +msgid "``std::shared_timed_mutex``" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:191 +msgid "" +"Read-write aware mutex type. Use ``RWLockRead lock(mutex)`` or ``RWLockWrite " +"lock(mutex)`` to lock it." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:194 +msgid "|safe_binary_mutex|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:194 +msgid "" +"Recursive mutex type that can be used with ``ConditionVariable``. Use " +"``MutexLock lock(mutex)`` to lock it." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:197 +msgid "|condition_variable|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:197 +msgid "``std::condition_variable``" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:197 +msgid "Condition variable type, used with ``SafeBinaryMutex``." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:199 +msgid "|semaphore|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:199 +msgid "``std::counting_semaphore``" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:199 +msgid "Counting semaphore type." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:201 +msgid "|safe_numeric|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:201 +#: ../../docs/engine_details/architecture/core_types.rst:205 +msgid "``std::atomic``" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:201 +msgid "Templated atomic type, designed for numbers." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:203 +msgid "|safe_flag|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:203 +msgid "``std::atomic_bool``" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:203 +msgid "Bool atomic type." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:205 +msgid "|safe_ref_count|" +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:205 +msgid "" +"Atomic type designed for reference counting. Will refuse to increment the " +"reference count if it is 0." +msgstr "" + +#: ../../docs/engine_details/architecture/core_types.rst:220 msgid "Math types" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:237 +#: ../../docs/engine_details/architecture/core_types.rst:222 msgid "" "There are several linear math types available in the ``core/math`` directory:" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:240 +#: ../../docs/engine_details/architecture/core_types.rst:225 msgid "" "`core/math `__" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:245 +#: ../../docs/engine_details/architecture/core_types.rst:230 msgid "" "This is a special datatype used for storing paths in a scene tree and " "referencing them in an optimized manner:" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:248 +#: ../../docs/engine_details/architecture/core_types.rst:233 msgid "" "`core/string/node_path.h `__" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:253 +#: ../../docs/engine_details/architecture/core_types.rst:238 msgid "" "RIDs are *Resource IDs*. Servers use these to reference data stored in them. " "RIDs are opaque, meaning that the data they reference can't be accessed " "directly. RIDs are unique, even for different types of referenced data:" msgstr "" -#: ../../docs/engine_details/architecture/core_types.rst:258 +#: ../../docs/engine_details/architecture/core_types.rst:243 #: ../../docs/engine_details/architecture/custom_godot_servers.rst:314 msgid "" "`core/templates/rid.h `__" msgstr "" -#: ../../docs/engine_details/architecture/variant_class.rst:4 -msgid "Variant class" -msgstr "" - #: ../../docs/engine_details/architecture/variant_class.rst:9 msgid "" "Variant is the most important datatype in Godot. A Variant takes up only 24 " @@ -149487,7 +152890,6 @@ msgstr "" #: ../../docs/engine_details/architecture/variant_class.rst:47 #: ../../docs/engine_details/architecture/variant_class.rst:151 -#: ../../docs/engine_details/architecture/object_class.rst:252 #: ../../docs/engine_details/architecture/custom_godot_servers.rst:19 #: ../../docs/engine_details/architecture/custom_godot_servers.rst:311 #: ../../docs/engine_details/architecture/custom_resource_format_loaders.rst:18 @@ -149695,9 +153097,9 @@ msgstr "" #: ../../docs/engine_details/architecture/variant_class.rst:146 msgid "" -"Modifications to a container will modify all references to it. A Mutex " -"should be created to lock it if :ref:`multi-threaded access " -"` is desired." +"Modifications to a container will modify all references to it. A :ref:`Mutex " +"` should be created to lock it if :ref:`multi-" +"threaded access ` is desired." msgstr "" #: ../../docs/engine_details/architecture/variant_class.rst:153 @@ -149712,10 +153114,6 @@ msgid "" "variant/array.h>`__" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:4 -msgid "Object class" -msgstr "" - #: ../../docs/engine_details/architecture/object_class.rst:8 msgid "" "This page describes the C++ implementation of objects in Godot. Looking for " @@ -149729,21 +153127,22 @@ msgstr "" #: ../../docs/engine_details/architecture/object_class.rst:14 msgid "" ":ref:`Object ` is the base class for almost everything. Most " -"classes in Godot inherit directly or indirectly from it. Objects provide " -"reflection and editable properties, and declaring them is a matter of using " -"a single macro like this:" +"classes in Godot inherit directly or indirectly from it. Declaring them is a " +"matter of using a single macro like this:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:26 -msgid "This adds a lot of functionality to Objects. For example:" +#: ../../docs/engine_details/architecture/object_class.rst:24 +msgid "" +"Objects come with a lot of built-in functionality, like reflection and " +"editable properties:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:36 -#: ../../docs/engine_details/architecture/object_class.rst:98 -#: ../../docs/engine_details/architecture/object_class.rst:270 -#: ../../docs/engine_details/architecture/object_class.rst:286 -#: ../../docs/engine_details/architecture/object_class.rst:307 -#: ../../docs/engine_details/architecture/object_class.rst:326 +#: ../../docs/engine_details/architecture/object_class.rst:34 +#: ../../docs/engine_details/architecture/object_class.rst:112 +#: ../../docs/engine_details/architecture/object_class.rst:324 +#: ../../docs/engine_details/architecture/object_class.rst:362 +#: ../../docs/engine_details/architecture/object_class.rst:383 +#: ../../docs/engine_details/architecture/object_class.rst:402 #: ../../docs/engine_details/architecture/custom_godot_servers.rst:468 #: ../../docs/engine_details/architecture/custom_audiostreams.rst:23 #: ../../docs/engine_details/architecture/custom_audiostreams.rst:115 @@ -149751,64 +153150,73 @@ msgstr "" msgid "References:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:38 +#: ../../docs/engine_details/architecture/object_class.rst:36 msgid "" "`core/object/object.h `__" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:41 -msgid "Registering an Object" +#: ../../docs/engine_details/architecture/object_class.rst:39 +msgid "Registering Object classes" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:43 +#: ../../docs/engine_details/architecture/object_class.rst:41 msgid "" -"ClassDB is a static class that holds the entire list of registered classes " -"that inherit from Object, as well as dynamic bindings to all their methods " -"properties and integer constants." +"Most ``Object`` subclasses are registered by calling ``GDREGISTER_CLASS``." msgstr "" #: ../../docs/engine_details/architecture/object_class.rst:47 -msgid "Classes are registered by calling:" -msgstr "" - -#: ../../docs/engine_details/architecture/object_class.rst:53 msgid "" -"Registering it will allow the class to be instanced by scripts, code, or " -"creating them again when deserializing." +"This will register it as a named, public class in the ``ClassDB``, which " +"will allow the class to be instantiated by scripts, code, or by " +"deserialization. Note that classes registered as ``GDREGISTER_CLASS`` should " +"expect to be instantiated or freed automatically, for example by the editor " +"or the documentation system." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:56 -msgid "Registering as virtual is the same but it can't be instanced." +#: ../../docs/engine_details/architecture/object_class.rst:51 +msgid "" +"Besides ``GDREGISTER_CLASS``, there are a few other modes of privateness:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:62 +#: ../../docs/engine_details/architecture/object_class.rst:71 +msgid "" +"It is also possible to use ``GDSOFTCLASS(MyCustomClass, SuperClass)`` " +"instead of ``GDCLASS(MyCustomClass, SuperClass)``. Classes defined this way " +"are not registered in the ``ClassDB`` at all. This is sometimes used for " +"platform-specific subclasses." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:76 +msgid "Registering bindings" +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:78 msgid "" "Object-derived classes can override the static function ``static void " -"_bind_methods()``. When one class is registered, this static function is " +"_bind_methods()``. When the class is registered, this static function is " "called to register all the object methods, properties, constants, etc. It's " -"only called once. If an Object derived class is instanced but has not been " -"registered, it will be registered as virtual automatically." +"only called once." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:69 +#: ../../docs/engine_details/architecture/object_class.rst:83 msgid "" "Inside ``_bind_methods``, there are a couple of things that can be done. " "Registering functions is one:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:76 +#: ../../docs/engine_details/architecture/object_class.rst:90 msgid "Default values for arguments can be passed as parameters at the end:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:82 +#: ../../docs/engine_details/architecture/object_class.rst:96 msgid "" "Default values must be provided in the same order as they are declared, " "skipping required arguments and then providing default values for the " "optional ones. This matches the syntax for declaring methods in C++." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:86 +#: ../../docs/engine_details/architecture/object_class.rst:100 msgid "" "``D_METHOD`` is a macro that converts \"methodname\" to a StringName for " "more efficiency. Argument names are used for introspection, but when " @@ -149816,84 +153224,84 @@ msgid "" "optimized away." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:91 +#: ../../docs/engine_details/architecture/object_class.rst:105 msgid "Check ``_bind_methods`` of Control or Object for more examples." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:93 +#: ../../docs/engine_details/architecture/object_class.rst:107 msgid "" "If just adding modules and functionality that is not expected to be " "documented as thoroughly, the ``D_METHOD()`` macro can safely be ignored and " "a string passing the name can be passed for brevity." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:100 +#: ../../docs/engine_details/architecture/object_class.rst:114 msgid "" "`core/object/class_db.h `__" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:105 +#: ../../docs/engine_details/architecture/object_class.rst:119 msgid "Classes often have enums such as:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:114 +#: ../../docs/engine_details/architecture/object_class.rst:128 msgid "" "For these to work when binding to methods, the enum must be declared " "convertible to int. A macro is provided to help with this:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:121 +#: ../../docs/engine_details/architecture/object_class.rst:135 msgid "The constants can also be bound inside ``_bind_methods``, by using:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:129 +#: ../../docs/engine_details/architecture/object_class.rst:143 msgid "Properties (set/get)" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:131 +#: ../../docs/engine_details/architecture/object_class.rst:145 msgid "Objects export properties, properties are useful for the following:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:133 +#: ../../docs/engine_details/architecture/object_class.rst:147 msgid "Serializing and deserializing the object." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:134 +#: ../../docs/engine_details/architecture/object_class.rst:148 msgid "Creating a list of editable values for the Object derived class." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:136 +#: ../../docs/engine_details/architecture/object_class.rst:150 msgid "" "Properties are usually defined by the PropertyInfo() class and constructed " "as:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:149 +#: ../../docs/engine_details/architecture/object_class.rst:163 msgid "" "This is an integer property named \"amount\". The hint is a range, and the " "range goes from 0 to 49 in steps of 1 (integers). It is only usable for the " "editor (editing the value visually) but won't be serialized." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:153 +#: ../../docs/engine_details/architecture/object_class.rst:167 msgid "Another example:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:159 +#: ../../docs/engine_details/architecture/object_class.rst:173 msgid "" "This is a string property, can take any string but the editor will only " "allow the defined hint ones. Since no usage flags were specified, the " "default ones are PROPERTY_USAGE_STORAGE and PROPERTY_USAGE_EDITOR." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:163 +#: ../../docs/engine_details/architecture/object_class.rst:177 msgid "" "There are plenty of hints and usage flags available in object.h, give them a " "check." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:166 +#: ../../docs/engine_details/architecture/object_class.rst:180 msgid "" "Properties can also work like C# properties and be accessed from script " "using indexing, but this usage is generally discouraged, as using functions " @@ -149902,57 +153310,40 @@ msgid "" "operator []." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:172 +#: ../../docs/engine_details/architecture/object_class.rst:186 msgid "" "From ``_bind_methods()``, properties can be created and bound as long as set/" "get functions exist. Example:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:179 +#: ../../docs/engine_details/architecture/object_class.rst:193 msgid "This creates the property using the setter and the getter." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:184 +#: ../../docs/engine_details/architecture/object_class.rst:198 msgid "Binding properties using ``_set``/``_get``/``_get_property_list``" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:186 +#: ../../docs/engine_details/architecture/object_class.rst:200 msgid "" "An additional method of creating properties exists when more flexibility is " "desired (i.e. adding or removing properties on context)." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:189 +#: ../../docs/engine_details/architecture/object_class.rst:203 msgid "" "The following functions can be overridden in an Object derived class, they " "are NOT virtual, DO NOT make them virtual, they are called for every " "override and the previous ones are not invalidated (multilevel call)." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:201 +#: ../../docs/engine_details/architecture/object_class.rst:215 msgid "" "This is also a little less efficient since ``p_property`` must be compared " "against the desired names in serial order." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:205 -msgid "Dynamic casting" -msgstr "" - -#: ../../docs/engine_details/architecture/object_class.rst:207 -msgid "" -"Godot provides dynamic casting between Object-derived classes, for example:" -msgstr "" - -#: ../../docs/engine_details/architecture/object_class.rst:217 -msgid "" -"If cast fails, NULL is returned. This system uses RTTI, but it also works " -"fine (although a bit slower) when RTTI is disabled. This is useful on " -"platforms where a small binary size is ideal, such as HTML5 or consoles " -"(with low memory footprint)." -msgstr "" - -#: ../../docs/engine_details/architecture/object_class.rst:225 +#: ../../docs/engine_details/architecture/object_class.rst:222 msgid "" "Objects can have a set of signals defined (similar to Delegates in other " "languages). This example shows how to connect to them:" @@ -149960,8 +153351,9 @@ msgstr "" #: ../../docs/engine_details/architecture/object_class.rst:234 msgid "" -"The method ``_node_entered_tree`` must be registered to the class using " -"``ClassDB::bind_method`` (explained before)." +"``callable_mp`` is a macro to create a custom callable function pointer to " +"member functions. For the values of ``p_flags``, see :ref:`ConnectFlags " +"`." msgstr "" #: ../../docs/engine_details/architecture/object_class.rst:237 @@ -149970,34 +153362,132 @@ msgid "" "``ADD_SIGNAL`` macro, for example:" msgstr "" +#: ../../docs/engine_details/architecture/object_class.rst:245 +msgid "Object ownership and casting" +msgstr "" + #: ../../docs/engine_details/architecture/object_class.rst:247 msgid "" -"All objects in Godot have a :ref:`_notification " -"` method that allows it to " -"respond to engine level callbacks that may relate to it. More information " -"can be found on the :ref:`doc_godot_notifications` page." +"Objects are allocated on the heap. There are two different ownership models:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:254 -msgid "" -":ref:`RefCounted ` inherits from Object and holds a " -"reference count. It is the base for reference counted object types. " -"Declaring them must be done using Ref<> template. For example:" +#: ../../docs/engine_details/architecture/object_class.rst:249 +msgid "Objects derived from ``RefCounted`` are reference counted." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:266 +#: ../../docs/engine_details/architecture/object_class.rst:250 +msgid "All other objects are manually memory managed." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:252 msgid "" -"``myref`` is reference counted. It will be freed when no more Ref<> " -"templates point to it." +"The ownership models are fundamentally different. Refer to the section for " +"each respectively to learn how to create, store, and free the object." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:255 +msgid "" +"When you do not know whether an object passed to you (via ``Object *``) is " +"``RefCounted``, and you need to store it, you should store its ``ObjectID`` " +"rather than a pointer (as explained below, in the manual memory management " +"section)." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:258 +msgid "" +"When an object is passed to you via :ref:`Variant`, " +"especially when using deferred callbacks, it is possible that the contained " +"``Object *`` was already freed by the time your function runs. Instead of " +"converting directly to ``Object *``, you should use ``get_validated_object``:" +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:270 +msgid "Manual memory management" msgstr "" #: ../../docs/engine_details/architecture/object_class.rst:272 msgid "" -"`core/object/reference.h ` subclasses are memory managed with " +"`reference counting semantics `__." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:301 +msgid "" +"They are constructed using ``memnew``, and should be stored in ``Ref`` " +"instances. When the last ``Ref`` instance is dropped, the object " +"automatically self-destructs." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:317 +msgid "" +"You should never call ``memdelete`` for ``RefCounted`` subclasses, because " +"there may be other owners of it." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:319 +msgid "" +"You should also never store ``RefCounted`` subclasses using raw pointers, " +"for example ``RefCounted *object = memnew(RefCounted)``. This is unsafe " +"because other owners may destruct the object, leaving you with a dangling " +"pointer, which will eventually result in a crash." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:326 +msgid "" +"`core/object/ref_counted.h `__" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:277 +#: ../../docs/engine_details/architecture/object_class.rst:329 +msgid "Dynamic casting" +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:331 +msgid "" +"Godot provides dynamic casting between Object-derived classes, for example:" +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:339 +msgid "" +"If the cast fails, ``nullptr`` is returned. This works the same as " +"``dynamic_cast``, but does not use `C++ RTTI `__." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:345 +msgid "" +"All objects in Godot have a :ref:`_notification " +"` method that allows them to " +"respond to engine-level callbacks that may relate to it. More information " +"can be found on the :ref:`doc_godot_notifications` page." +msgstr "" + +#: ../../docs/engine_details/architecture/object_class.rst:353 msgid "" ":ref:`Resource ` inherits from RefCounted, so all resources " "are reference counted. Resources can optionally contain a path, which " @@ -150007,50 +153497,50 @@ msgid "" "error." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:283 +#: ../../docs/engine_details/architecture/object_class.rst:359 msgid "Resources without a path are fine too." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:288 +#: ../../docs/engine_details/architecture/object_class.rst:364 msgid "" "`core/io/resource.h `__" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:291 +#: ../../docs/engine_details/architecture/object_class.rst:367 msgid "Resource loading" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:293 +#: ../../docs/engine_details/architecture/object_class.rst:369 msgid "Resources can be loaded with the ResourceLoader API, like this:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:299 +#: ../../docs/engine_details/architecture/object_class.rst:375 msgid "" "If a reference to that resource has been loaded previously and is in memory, " "the resource loader will return that reference. This means that there can be " "only one resource loaded from a file referenced on disk at the same time." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:304 +#: ../../docs/engine_details/architecture/object_class.rst:380 msgid "resourceinteractiveloader (TODO)" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:309 +#: ../../docs/engine_details/architecture/object_class.rst:385 msgid "" "`core/io/resource_loader.h `__" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:312 +#: ../../docs/engine_details/architecture/object_class.rst:388 msgid "Resource saving" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:314 +#: ../../docs/engine_details/architecture/object_class.rst:390 msgid "Saving a resource can be done with the resource saver API:" msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:320 +#: ../../docs/engine_details/architecture/object_class.rst:396 msgid "" "The instance will be saved, and sub resources that have a path to a file " "will be saved as a reference to that resource. Sub resources without a path " @@ -150058,7 +153548,7 @@ msgid "" "someresource.res::1``. This also helps to cache them when loaded." msgstr "" -#: ../../docs/engine_details/architecture/object_class.rst:328 +#: ../../docs/engine_details/architecture/object_class.rst:404 msgid "" "`core/io/resource_saver.h `__" @@ -154299,10 +157789,6 @@ msgid "" "introduction.html>`__." msgstr "" -#: ../../docs/engine_details/development/configuring_an_ide/index.rst:6 -msgid "Configuring an IDE" -msgstr "" - #: ../../docs/engine_details/development/configuring_an_ide/index.rst:8 msgid "" "We assume that you have already `cloned /platform/android/java/app/" -"assets``) to run. This is usually handled by the Godot Editor during the " -"export process. While developing in Android Studio, it's necessary to " +"``assets`` directory (``/platform/android/java/app/src/" +"main/assets``) to run. This is usually handled by the Godot Editor during " +"the export process. While developing in Android Studio, it's necessary to " "manually add a Godot project under that directory to replicate the export " "process. Once that's done, you can follow the instructions below to run/" "debug the ``app`` module:" @@ -156574,8 +160060,8 @@ msgid "" "The ``version.txt`` file should contain the corresponding Godot version " "identifier. This file is used to install export templates in a version-" "specific directory to avoid conflicts. For instance, if you are building " -"export templates for Godot 3.1.1, ``version.txt`` should contain " -"``3.1.1.stable`` on the first line (and nothing else). This version " +"export templates for Godot 4.4.1, ``version.txt`` should contain " +"``4.4.1.stable`` on the first line (and nothing else). This version " "identifier is based on the ``major``, ``minor``, ``patch`` (if present) and " "``status`` lines of the `version.py file in the Godot Git repository " "`__." @@ -156604,11 +160090,11 @@ msgstr "" msgid "For compiling under Windows, the following is required:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:19 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:18 msgid "A C++ compiler. Use one of the following:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:21 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:20 msgid "" "`Visual Studio Community `_, " "version 2019 or later. Visual Studio 2022 is recommended. **Make sure to " @@ -156618,7 +160104,7 @@ msgid "" "``arm64``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:27 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:26 msgid "" "`MinGW-w64 `_ with GCC can be used as an alternative " "to Visual Studio. Be sure to install/configure it to use the ``posix`` " @@ -156626,62 +160112,69 @@ msgid "" "branch, you need GCC 9 or later. Supports ``x86_64`` and ``x86_32`` only." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:31 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:30 msgid "" "`MinGW-LLVM `_ with clang " "can be used as an alternative to Visual Studio and MinGW-w64. Supports " "``x86_64``, ``x86_32``, and ``arm64``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:34 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:33 msgid "" "`Python 3.8+ `_. **Make sure to " "enable the option to add Python to the** ``PATH`` **in the installer.**" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:36 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:35 msgid "" "`SCons 4.0+ `_ build system. Using " "the latest release is recommended, especially for proper support of recent " "Visual Studio releases." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:40 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:38 +msgid "" +":ref:`Direct3D 12 dependencies " +"` (can be skipped " +"with the ``d3d12=no`` SCons option if Direct3D 12 support is not desired)." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:41 msgid "" "If you have `Scoop `_ installed, you can easily install " "MinGW and other dependencies using the following command:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:47 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:48 msgid "Scons will still need to be installed via pip" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:48 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:49 msgid "" "If you have `MSYS2 `_ installed, you can easily " "install MinGW and other dependencies using the following command:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:55 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:56 msgid "" "For each MSYS2 MinGW subsystem, you should then run `pip3 install scons` in " "its shell." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:58 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:59 #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:35 #: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:45 -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:43 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:42 #: ../../docs/engine_details/development/compiling/compiling_for_ios.rst:44 #: ../../docs/engine_details/development/compiling/compiling_for_web.rst:22 msgid "" "To get the Godot source code for compiling, see :ref:`doc_getting_source`." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:61 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:62 #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:37 #: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:48 -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:46 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:45 #: ../../docs/engine_details/development/compiling/compiling_for_ios.rst:47 #: ../../docs/engine_details/development/compiling/compiling_for_web.rst:25 msgid "" @@ -156689,16 +160182,16 @@ msgid "" "see :ref:`doc_introduction_to_the_buildsystem`." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:65 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:66 msgid "Setting up SCons" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:67 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:68 msgid "" "To install SCons, open the command prompt and run the following command:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:73 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:74 msgid "" "If you are prompted with the message ``Defaulting to user installation " "because normal site-packages is not writeable``, you may have to run that " @@ -156707,14 +160200,14 @@ msgid "" "from the ``PATH``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:79 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:80 msgid "" "To check whether you have installed Python and SCons correctly, you can type " "``python --version`` and ``scons --version`` into a command prompt " "(``cmd.exe``)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:83 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:84 msgid "" "If the commands above don't work, make sure to add Python to your ``PATH`` " "environment variable after installing it, then check again. You can do so by " @@ -156722,35 +160215,35 @@ msgid "" "the ``PATH``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:88 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:89 msgid "" "If SCons cannot detect your Visual Studio installation, it might be that " "your SCons version is too old. Update it to the latest version with ``python " "-m pip install --upgrade scons``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:95 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:96 msgid "Downloading Godot's source" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:97 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:98 msgid "Refer to :ref:`doc_getting_source` for detailed instructions." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:99 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:100 msgid "" "The tutorial will assume from now on that you placed the source code in ``C:" "\\godot``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:104 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:105 msgid "" "To prevent slowdowns caused by continuous virus scanning during compilation, " "add the Godot source folder to the list of exceptions in your antivirus " "software." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:108 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:109 msgid "" "For Windows Defender, hit the :kbd:`Windows` key, type \"Windows Security\" " "then hit :kbd:`Enter`. Click on **Virus & threat protection** on the left " @@ -156759,11 +160252,11 @@ msgid "" "exclusions** then add the Godot source folder." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:118 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:119 msgid "Selecting a compiler" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:120 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:121 msgid "" "SCons will automatically find and use an existing Visual Studio " "installation. If you do not have Visual Studio installed, it will attempt to " @@ -156774,7 +160267,7 @@ msgid "" "``use_mingw=yes`` and ``use_llvm=yes`` to the SCons command line." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:130 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:131 msgid "" "During development, using the Visual Studio compiler is usually a better " "idea, as it links the Godot binary much faster than MinGW. However, MinGW " @@ -156785,29 +160278,29 @@ msgid "" "distribute to players." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:138 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:139 msgid "" "All official Godot binaries are built in `custom containers `__ using MinGW." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:143 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:144 msgid "Running SCons" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:145 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:146 msgid "" "After opening a command prompt, change to the root directory of the engine " "source code (using ``cd``) and type:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:152 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:153 msgid "" "When compiling with multiple CPU threads, SCons may warn about pywin32 being " "missing. You can safely ignore this warning." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:156 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:157 #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:263 #: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:69 msgid "" @@ -156817,7 +160310,7 @@ msgid "" "for more info." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:161 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:162 msgid "" "If all goes well, the resulting binary executable will be placed in ``C:" "\\godot\\bin\\`` with the name ``godot.windows.editor.x86_32.exe`` or " @@ -156826,13 +160319,13 @@ msgid "" "``arch=x86_64``, ``arch=x86_32``, or ``arch=arm64``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:167 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:168 msgid "" "This executable file contains the whole engine and runs without any " "dependencies. Running it will bring up the Project Manager." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:170 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:171 #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:285 msgid "" "If you are compiling Godot for production use, you can make the final " @@ -156840,7 +160333,7 @@ msgid "" "This enables additional compiler optimizations and link-time optimization." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:175 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:176 msgid "" "LTO takes some time to run and requires up to 30 GB of available RAM while " "compiling (depending on toolchain). If you're running out of memory with the " @@ -156848,7 +160341,7 @@ msgid "" "(LLVM only) for a lightweight but less effective form of LTO." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:180 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:181 #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:295 #: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:82 msgid "" @@ -156857,33 +160350,35 @@ msgid "" "by creating a file called ``._sc_`` or ``_sc_`` in the ``bin/`` folder." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:186 -msgid "Compiling with support for Direct3D 12" -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:188 -msgid "" -"By default, builds of Godot do not contain support for the Direct3D 12 " -"graphics API." +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:189 +msgid "Installing Direct3D 12 requirements" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:191 msgid "" -"You can install the required dependencies by running ``python misc/scripts/" -"install_d3d12_sdk_windows.py`` in the Godot source repository. After running " -"this script, add the ``d3d12=yes`` SCons option to enable Direct3D 12 " -"support. This will use the default paths for the various dependencies, which " -"match the ones used in the script." +"By default, Windows builds of Godot contain support for the Direct3D 12 " +"graphics API. Compiling with Direct3D 12 support requires additional " +"dependencies to be installed. If you wish to skip this step, you can use the " +"``d3d12=no`` SCons option; Vulkan and OpenGL support will remain available " +"if you do so." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:197 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:196 +msgid "" +"You can install the required dependencies by running ``python misc/scripts/" +"install_d3d12_sdk_windows.py`` in the Godot source repository. After running " +"this script, compile Godot as usual. This will use the default paths for the " +"various dependencies, which match the ones used in the script." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:202 msgid "" "You can find the detailed steps below if you wish to set up dependencies " "manually, but the above script handles everything for you (including the " "optional PIX and Agility SDK components)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:201 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:206 msgid "" "`godot-nir-static library `_. We compile the Mesa libraries you will need into a static " @@ -156891,33 +160386,54 @@ msgid "" "unzipped folder, you will need it below." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:206 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:211 msgid "" "You can optionally build the godot-nir-static libraries yourself with the " "following steps:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:209 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:214 msgid "" "Install the Python package `mako `_ which is " "needed to generate some files." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:211 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:216 msgid "" "Clone the `godot-nir-static `_ directory and navigate to it." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:213 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:218 msgid "Run the following:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:234 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:226 +msgid "" +"If you are building with MinGW-w64, add ``use_mingw=yes`` to the ``scons`` " +"command, you can also specify the build architecture using " +"``arch={architecture}``. If you are building with MinGW-LLVM, add both " +"``use_mingw=yes`` and ``use_llvm=yes`` to the ``scons`` command." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:231 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:372 +msgid "" +"If you are building with MinGW and the binaries are not located in the " +"``PATH``, add ``mingw_prefix=\"/path/to/mingw\"`` to the ``scons`` command." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:235 +msgid "" +"The Mesa static library should be built using the same compiler and the same " +"CRT (if you are building with MinGW) you are using for building Godot." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:239 msgid "Optionally, you can compile with the following for additional features:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:236 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:241 msgid "" "`PIX `_ is a performance tuning " "and debugging application for Direct3D12 applications. If you compile-in " @@ -156929,7 +160445,7 @@ msgid "" "path." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:243 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:248 msgid "" "`Agility SDK `_ can " "be used to provide access to the latest Direct3D 12 features without relying " @@ -156939,29 +160455,29 @@ msgid "" "unzip the file to some path." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:250 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:255 msgid "" "If you use a preview version of the Agility SDK, remember to enable " "developer mode in Windows; otherwise it won't be used." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:253 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:258 msgid "" "If you want to use a PIX with MinGW build, navigate to PIX runtime directory " "and use the following commands to generate import library:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:266 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:271 msgid "" "When building Godot, you will need to tell SCons to use Direct3D 12 and " "where to look for the additional libraries:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:273 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:278 msgid "Or, with all options enabled:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:279 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:284 msgid "" "For the Agility SDK's DLLs you have to explicitly choose the kind of " "workflow. Single-arch is the default (DLLs copied to ``bin/``). If you pass " @@ -156970,69 +160486,153 @@ msgid "" "runtime the right one will be loaded." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:286 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:291 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:301 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:88 +msgid "Compiling with AccessKit support" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:293 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:303 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:90 +msgid "AccessKit provides support for screen readers." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:295 +msgid "" +"By default, Godot is built with AccessKit dynamically linked. You can use it " +"by placing ``accesskit.dll`` alongside the executable." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:298 +msgid "" +"You can use dynamically linked AccessKit with export templates as well, " +"rename the DLL to ``accesskit.{architecture}.dll`` and place them alongside " +"the export template executables, and the libraries will be automatically " +"copied during the export process." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:303 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:313 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:100 +msgid "To compile Godot with statically linked AccessKit:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:305 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:315 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:102 +msgid "" +"Download the pre-built static libraries from `godot-accesskit-c-static " +"library `_, and unzip them." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:306 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:316 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:103 +msgid "" +"When building Godot, add ``accesskit_sdk_path={path}`` to tell SCons where " +"to look for the AccessKit libraries:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:312 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:354 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:322 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:109 +msgid "" +"You can optionally build the godot-angle-static libraries yourself with the " +"following steps:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:315 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:325 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:112 +msgid "" +"Clone the `godot-accesskit-c-static `_ directory and navigate to it." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:317 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:359 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:327 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:114 +msgid "Run the following command:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:326 +msgid "" +"The AccessKit static library should be built using the same compiler and the " +"same CRT (if you are building with MinGW) you are using for building Godot." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:331 msgid "Compiling with ANGLE support" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:288 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:333 msgid "" "ANGLE provides a translation layer from OpenGL ES 3.x to Direct3D 11 and can " "be used to improve support for the Compatibility renderer on some older GPUs " "with outdated OpenGL drivers and on Windows for ARM." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:292 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:337 msgid "" "By default, Godot is built with dynamically linked ANGLE, you can use it by " "placing ``libEGL.dll`` and ``libGLESv2.dll`` alongside the executable." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:295 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:340 msgid "" "You can use dynamically linked ANGLE with export templates as well, rename " -"aforementioned DLLs to ``libEGL.{architecture}.dll`` and ``libGLESv2." -"{architecture}.dll`` and place them alongside export template executables, " -"and libraries will be automatically copied during the export process." +"the DLLs to ``libEGL.{architecture}.dll`` and ``libGLESv2." +"{architecture}.dll`` and place them alongside the export template " +"executables, and the libraries will be automatically copied during the " +"export process." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:300 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:345 msgid "To compile Godot with statically linked ANGLE:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:302 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:347 msgid "" -"Download pre-built static libraries from `godot-angle-static library " +"Download the pre-built static libraries from `godot-angle-static library " "`_, and unzip " "them." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:303 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:348 msgid "" "When building Godot, add ``angle_libs={path}`` to tell SCons where to look " "for the ANGLE libraries:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:309 -msgid "" -"You can optionally build the godot-angle-static libraries yourself with the " -"following steps:" -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:312 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:357 msgid "" "Clone the `godot-angle-static `_ directory and navigate to it." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:314 -msgid "Run the following command:" +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:367 +msgid "" +"If you are buildng with MinGW, add ``use_mingw=yes`` to the command, you can " +"also specify the build architecture using ``arch={architecture}``. If you " +"are building with MinGW-LLVM, add both ``use_mingw=yes`` and " +"``use_llvm=yes`` to the ``scons`` command." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:336 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:376 +msgid "" +"The ANGLE static library should be built using the same compiler and the " +"same CRT (if you are building with MinGW) you are using for building Godot." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:381 msgid "Development in Visual Studio" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:338 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:383 msgid "" "Using an IDE is not required to compile Godot, as SCons takes care of " "everything. But if you intend to do engine development or debugging of the " @@ -157040,30 +160640,30 @@ msgid "" "IDE." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:342 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:387 msgid "" "Folder-based editors don't require any particular setup to start working " "with Godot's codebase. To edit projects with Visual Studio they need to be " "set up as a solution." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:345 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:390 msgid "" "You can create a Visual Studio solution via SCons by running SCons with the " "``vsproj=yes`` parameter, like this:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:352 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:397 msgid "" "You will be able to open Godot's source in a Visual Studio solution now, and " "able to build Godot using Visual Studio's **Build** button." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:355 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:400 msgid "See :ref:`doc_configuring_an_ide_vs` for further details." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:360 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:405 msgid "" "If you get a compilation failure when using MSVC, make sure to apply the " "latest updates. You can do so by starting the Visual Studio IDE and " @@ -157071,11 +160671,11 @@ msgid "" "in the menu bar at the top. Install all updates, then try compiling again." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:366 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:411 msgid "Cross-compiling for Windows from other operating systems" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:368 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:413 msgid "" "If you are a Linux or macOS user, you need to install `MinGW-w64 `__, which typically comes in 32-bit and 64-bit variants, " @@ -157084,55 +160684,55 @@ msgid "" "may differ based on your distribution, here are some known ones:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:379 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:424 msgid "**Debian** / **Ubuntu**" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:383 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:428 msgid "**Fedora**" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:388 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:433 msgid "**macOS**" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:392 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:437 msgid "**Mageia**" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:398 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:443 msgid "" "Before attempting the compilation, SCons will check for the following " "binaries in your ``PATH`` environment variable:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:412 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:457 msgid "" "If the binaries are not located in the ``PATH`` (e.g. ``/usr/bin``), you can " "define the following environment variable to give a hint to the build system:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:420 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:465 msgid "" "Where ``/path/to/mingw`` is the path containing the ``bin`` directory where " "``i686-w64-mingw32-gcc`` and ``x86_64-w64-mingw32-gcc`` are located (e.g. ``/" "opt/mingw-w64`` if the binaries are located in ``/opt/mingw-w64/bin``)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:424 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:469 msgid "" "To make sure you are doing things correctly, executing the following in the " "shell should result in a working compiler (the version output may differ " "based on your system):" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:433 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:478 msgid "" "If you are building with MinGW-LLVM, add ``use_llvm=yes`` to the ``scons`` " "command." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:434 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:479 msgid "" "When cross-compiling for Windows using MinGW-w64, keep in mind only " "``x86_64`` and ``x86_32`` architectures are supported. MinGW-LLVM supports " @@ -157140,51 +160740,51 @@ msgid "" "invoking SCons if building from a different architecture." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:442 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:487 msgid "" "Cross-compiling from some Ubuntu versions may lead to `this bug `_, due to a default configuration " "lacking support for POSIX threading." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:446 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:491 msgid "" "You can change that configuration following those instructions, for 64-bit:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:455 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:500 msgid "And for 32-bit:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:465 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:510 msgid "Creating Windows export templates" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:467 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:512 msgid "" "Windows export templates are created by compiling Godot without the editor, " "with the following flags:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:479 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:524 msgid "" "If you plan on replacing the standard export templates, copy these to the " "following location, replacing ```` with the version identifier " "(such as ``4.2.1.stable`` or ``4.3.dev``):" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:487 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:532 msgid "With the following names:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:504 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:549 msgid "" "However, if you are using custom modules or custom engine code, you may " "instead want to configure your binaries as custom export templates in the " "project export menu. You must have **Advanced Options** enabled to set this." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:511 +#: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:556 msgid "" "You don't need to copy them in this case, just reference the resulting files " "in the ``bin\\`` directory of your Godot source folder, so the next time you " @@ -157266,13 +160866,13 @@ msgid "Arch Linux" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:84 -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:553 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:592 #: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:76 msgid "Debian/Ubuntu" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:105 -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:578 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:617 #: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:82 msgid "Fedora" msgstr "" @@ -157359,43 +160959,64 @@ msgid "" "but less effective form of LTO." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:301 -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:133 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:305 +msgid "" +"By default, Godot is built with AccessKit dynamically linked. You can use it " +"by placing ``accesskit.so`` alongside the executable." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:308 +msgid "" +"You can use dynamically linked AccessKit with export templates as well, " +"rename the SO to ``accesskit.{architecture}.so`` and place them alongside " +"the export template executables, and the libraries will be automatically " +"copied during the export process." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:336 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:123 +msgid "" +"The AccessKit static library should be built using the same compiler you are " +"using for building Godot." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:340 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:172 msgid "Running a headless/server build" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:303 -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:135 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:342 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:174 msgid "" "To run in *headless* mode which provides editor functionality to export " "projects in an automated manner, use the normal build:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:310 -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:142 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:349 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:181 msgid "And then use the ``--headless`` command line argument:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:316 -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:148 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:355 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:187 msgid "" "To compile a debug *server* build which can be used with :ref:`remote " "debugging tools `, use:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:323 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:362 msgid "" "To compile a *server* build which is optimized to run dedicated game " "servers, use:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:330 -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:162 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:369 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:201 #: ../../docs/engine_details/development/compiling/compiling_for_web.rst:29 msgid "Building export templates" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:332 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:371 msgid "" "Linux binaries usually won't run on distributions that are older than the " "distribution they were built on. If you wish to distribute binaries that " @@ -157404,39 +161025,39 @@ msgid "" "a suitable build environment." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:340 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:379 msgid "" "To build Linux or \\*BSD export templates, run the build system with the " "following parameters:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:343 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:382 msgid "(32 bits)" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:350 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:389 msgid "(64 bits)" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:357 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:396 msgid "" "Note that cross-compiling for the opposite bits (64/32) as your host " "platform is not always straight-forward and might need a chroot environment." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:360 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:399 msgid "" "To create standard export templates, the resulting files in the ``bin/`` " "folder must be copied to:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:367 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:406 msgid "" "and named like this (even for \\*BSD which is seen as \"Linux/X11\" by " "Godot):" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:380 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:419 msgid "" "However, if you are writing your custom modules or custom C++ code, you " "might instead want to configure your binaries as custom export templates in " @@ -157444,24 +161065,24 @@ msgid "" "this." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:387 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:426 msgid "" "You don't even need to copy them, you can just reference the resulting files " "in the ``bin/`` directory of your Godot source folder, so the next time you " "build, you automatically have the custom templates referenced." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:392 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:431 msgid "Cross-compiling for RISC-V devices" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:394 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:433 msgid "" "To cross-compile Godot for RISC-V devices, we need to setup the following " "items:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:396 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:435 msgid "" "`riscv-gnu-toolchain `__. While we are not going to use this directly, it provides us " @@ -157474,7 +161095,7 @@ msgid "" "path." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:403 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:442 msgid "" "`mold `__. This fast linker, is the " "only one that correctly links the resulting binary. Download it, extract it, " @@ -157483,28 +161104,28 @@ msgid "" "don't see RISC-V, your Mold may need to be updated." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:409 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:448 msgid "" "To make referencing our toolchain easier, we can set an environment variable " "like this:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:416 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:455 msgid "" "This way, we won't have to manually set the directory location each time we " "want to reference it." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:419 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:458 msgid "With all the above setup, we are now ready to build Godot." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:421 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:460 msgid "" "Go to the root of the source code, and execute the following build command:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:432 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:471 msgid "" "RISC-V GCC has `bugs with its atomic operations `__ which prevent it from compiling Godot " @@ -157513,7 +161134,7 @@ msgid "" "targets``, make sure you see ``riscv64`` on the list of targets." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:437 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:476 msgid "" "The code above includes adding ``$RISCV_TOOLCHAIN_PATH/bin`` to the PATH, " "but only for the following ``scons`` command. Since riscv-gnu-toolchain uses " @@ -157526,7 +161147,7 @@ msgid "" "with riscv-gnu-toolchain." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:446 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:485 msgid "" "The command is similar in nature, but with some key changes. ``ccflags`` and " "``linkflags`` append additional flags to the build. ``--sysroot`` points to " @@ -157536,77 +161157,77 @@ msgid "" "to Clang the target architecture, and OS we want to build for." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:453 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:492 msgid "" "If all went well, you should now see a ``bin`` directory, and within it, a " "binary similar to the following:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:460 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:499 msgid "" "You can now copy this executable to your favorite RISC-V device, then launch " "it there by double-clicking, which should bring up the project manager." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:464 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:503 msgid "" "If you later decide to compile the export templates, copy the above build " "command but change the value of ``target`` to ``template_debug`` for a debug " "build, or ``template_release`` for a release build." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:469 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:508 msgid "Using Clang and LLD for faster development" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:471 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:510 msgid "" "You can also use Clang and LLD to build Godot. This has two upsides compared " "to the default GCC + GNU ld setup:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:474 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:513 msgid "" "LLD links Godot significantly faster compared to GNU ld or gold. This leads " "to faster iteration times." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:476 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:515 msgid "Clang tends to give more useful error messages compared to GCC." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:478 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:517 msgid "" "To do so, install Clang and the ``lld`` package from your distribution's " "package manager then use the following SCons command:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:485 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:524 msgid "" "After the build is completed, a new binary with a ``.llvm`` suffix will be " "created in the ``bin/`` folder." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:488 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:527 msgid "" "It's still recommended to use GCC for production builds as they can be " "compiled using link-time optimization, making the resulting binaries smaller " "and faster." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:491 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:530 msgid "If this error occurs:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:497 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:536 msgid "There are two solutions:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:499 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:538 msgid "In your SCons command, add the parameter ``use_static_cpp=no``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:500 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:539 msgid "" "Follow `these instructions `__ to configure, build, and install " @@ -157617,52 +161238,52 @@ msgid "" "time when it is updated." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:506 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:545 msgid "Using mold for faster development" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:508 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:547 msgid "" "For even faster linking compared to LLD, you can use `mold `__. mold can be used with either GCC or Clang." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:511 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:550 msgid "" "As of January 2023, mold is not readily available in Linux distribution " "repositories, so you will have to install its binaries manually." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:514 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:553 msgid "" "Download mold binaries from its `releases page `__." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:515 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:554 msgid "" "Extract the ``.tar.gz`` file, then move the extracted folder to a location " "such as ``.local/share/mold``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:516 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:555 msgid "" "Add ``$HOME/.local/share/mold/bin`` to your user's ``PATH`` environment " "variable. For example, you can add the following line at the end of your " "``$HOME/.bash_profile`` file:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:523 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:562 msgid "" "Open a new terminal (or run ``source \"$HOME/.bash_profile\"``), then use " "the following SCons command when compiling Godot:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:531 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:570 msgid "Using system libraries for faster development" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:533 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:572 msgid "" "`Godot bundles the source code of various third-party libraries. `__ You can choose to " @@ -157672,13 +161293,13 @@ msgid "" "engine (even on small incremental changes)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:539 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:578 msgid "" "However, not all Linux distributions have packages for third-party libraries " "available (or they may not be up-to-date)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:542 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:581 msgid "" "Moving to system libraries can reduce linking times by several seconds on " "slow CPUs, but it requires manual testing depending on your Linux " @@ -157687,32 +161308,32 @@ msgid "" "system, as this feature is less tested)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:548 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:587 msgid "" "To compile Godot with system libraries, install these dependencies **on " "top** of the ones listed in the :ref:`doc_compiling_for_linuxbsd_oneliners`:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:598 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:637 msgid "" "After installing all required packages, use the following command to build " "Godot:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:607 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:646 msgid "" "On Debian stable, you will need to remove `builtin_embree=no` as the system-" "provided Embree version is too old to work with Godot's latest `master` " "branch (which requires Embree 4)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:611 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:650 msgid "" "You can view a list of all built-in libraries that have system alternatives " "by running ``scons -h``, then looking for options starting with ``builtin_``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:616 +#: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:655 msgid "" "When using system libraries, the resulting binary is **not** portable across " "Linux distributions anymore. Do not use this approach for creating binaries " @@ -157801,35 +161422,50 @@ msgid "" "packaged into a ``.app`` bundle to avoid UI activation issues." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:88 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:92 +msgid "" +"By default, Godot is built with AccessKit dynamically linked. You can use it " +"by placing ``accesskit.dylib`` alongside the standalone executable or in the " +"app bundle's ``Frameworks`` folder." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:95 +msgid "" +"You can use dynamically linked AccessKit with export templates as well, " +"rename the DYLIB to ``accesskit.{architecture}.dylib`` and place them inside " +"the export template app bundle ``Frameworks`` folder, and the libraries will " +"be automatically copied during the export process." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:127 msgid "Automatic ``.app`` bundle creation" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:90 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:129 msgid "" "To automatically create a ``.app`` bundle like in the official builds, use " "the ``generate_bundle=yes`` option on the *last* SCons command used to build " "editor:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:99 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:138 msgid "Manual ``.app`` bundle creation" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:101 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:140 msgid "" "To support both architectures in a single \"Universal 2\" binary, run the " "above two commands and then use ``lipo`` to bundle them together:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:108 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:147 msgid "" "To create a ``.app`` bundle, you need to use the template located in ``misc/" "dist/macos_tools.app``. Typically, for an optimized editor binary built with " "``dev_build=yes``:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:121 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:160 msgid "" "If you are building the ``master`` branch, you also need to include support " "for the MoltenVK Vulkan portability library. By default, it will be linked " @@ -157838,47 +161474,48 @@ msgid "" "dynamic library in your ``.app`` bundle:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:155 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:194 msgid "" "To compile a release *server* build which is optimized to run dedicated game " "servers, use:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:164 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:203 msgid "" "To build macOS export templates, you have to compile using the targets " "without the editor: ``target=template_release`` (release template) and " "``target=template_debug``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:168 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:207 msgid "" "Official templates are *Universal 2* binaries which support both ARM64 and " "Intel x86_64 architectures." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:171 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:210 msgid "To support ARM64 (Apple Silicon) + Intel x86_64:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:180 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:219 msgid "" "To support ARM64 (Apple Silicon) only (smaller file size, but less " "compatible with older hardware):" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:187 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:226 msgid "" "To create a ``.app`` bundle like in the official builds, you need to use the " "template located in ``misc/dist/macos_template.app``. This process can be " "automated by using the ``generate_bundle=yes`` option on the *last* SCons " "command used to build export templates (so that all binaries can be " -"included). This option also takes care of calling ``lipo`` to create a " -"*Universal 2* binary from two separate ARM64 and x86_64 binaries (if both " -"were compiled beforehand)." +"included). This will create a ``godot_macos.zip`` file in ``bin/`` and " +"additionally takes care of calling ``lipo`` to create a *Universal 2* binary " +"from two separate ARM64 and x86_64 binaries (if both were compiled " +"beforehand)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:195 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:235 msgid "" "You also need to include support for the MoltenVK Vulkan portability " "library. By default, it will be linked statically from your installation of " @@ -157887,24 +161524,48 @@ msgid "" "bundle:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:206 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:246 msgid "" "In most cases, static linking should be preferred as it makes distribution " "easier. The main upside of dynamic linking is that it allows updating " "MoltenVK without having to recompile export templates." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:210 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:250 msgid "" -"You can then zip the ``macos_template.app`` folder to reproduce the " -"``macos.zip`` template from the official Godot distribution:" +"If you created the ``.app`` manually, you can zip the ``macos_template.app`` " +"folder to reproduce the ``macos.zip`` template from the official Godot " +"distribution:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:218 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:257 +msgid "" +"To use your custom export templates, you can select the ``godot_macos.zip`` " +"file in the advanced options of your export presets:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:262 +msgid "" +"Alternatively, if you want all your presets to use your custom export " +"template, you can rename the ``godot_macos.zip`` file to ``macos.zip`` and " +"move it to the default location for export templates:" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:266 +msgid "::" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:267 +msgid "" +"~/Library/Application Support/Godot/export_templates//" +"macos.zip" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:270 msgid "Cross-compiling for macOS from Linux" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:220 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:272 msgid "" "It is possible to compile for macOS in a Linux environment (and maybe also " "in Windows using the Windows Subsystem for Linux). For that, you'll need to " @@ -157912,49 +161573,49 @@ msgid "" "to use macOS as a target. First, follow the instructions to install it:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:225 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:277 msgid "" "Clone the `OSXCross repository `__ " "somewhere on your machine (or download a ZIP file and extract it somewhere), " "e.g.:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:232 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:284 msgid "" "Follow the instructions to package the SDK: https://github.com/tpoechtrager/" "osxcross#packaging-the-sdk" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:234 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:286 msgid "" "Follow the instructions to install OSXCross: https://github.com/tpoechtrager/" "osxcross#installation" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:237 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:289 msgid "" "After that, you will need to define the ``OSXCROSS_ROOT`` as the path to the " "OSXCross installation (the same place where you cloned the repository/" "extracted the zip), e.g.:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:245 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:297 msgid "Now you can compile with SCons like you normally would:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:251 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:303 msgid "" "If you have an OSXCross SDK version different from the one expected by the " "SCons buildsystem, you can specify a custom one with the ``osxcross_sdk`` " "argument:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:261 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:313 #: ../../docs/engine_details/development/compiling/compiling_for_ios.rst:99 msgid "Fatal error: 'cstdint' file not found" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:263 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:315 #: ../../docs/engine_details/development/compiling/compiling_for_ios.rst:101 msgid "" "If you get a compilation error of this form early on, it's likely because " @@ -157962,14 +161623,14 @@ msgid "" "or Xcode update:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:273 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:325 #: ../../docs/engine_details/development/compiling/compiling_for_ios.rst:111 msgid "" "Run these two commands to reinstall Xcode command line tools (enter your " "administrator password as needed):" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:281 +#: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:333 #: ../../docs/engine_details/development/compiling/compiling_for_ios.rst:119 msgid "" "If it still does not work, try updating Xcode from the Mac App Store and try " @@ -158010,91 +161671,74 @@ msgid "For compiling under Windows, Linux or macOS, the following is required:" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_android.rst:31 +msgid "Android SDK" +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:33 msgid "" -"`Android SDK `_ " -"(command-line tools are sufficient)." +"To install the Android SDK, follow the steps here _." msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_android.rst:34 -msgid "Required SDK components will be automatically installed." -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:35 msgid "" "On Linux, **do not use an Android SDK provided by your distribution's " "repositories** as it will often be outdated." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:36 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:35 msgid "" "On macOS, **do not use an Android SDK provided by Homebrew** as it will not " "be installed in a unified location." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:38 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:37 msgid "Gradle (will be downloaded and installed automatically if missing)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:39 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:38 msgid "JDK 17 (either OpenJDK or Oracle JDK)." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:41 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:40 msgid "" "You can download a build from `Adoptium `_." +"releases?variant=openjdk17&version=17&os=any&arch=any>`_." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:52 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:51 msgid "Setting up the buildsystem" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:54 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:53 msgid "" "Set the environment variable ``ANDROID_HOME`` to point to the Android SDK. " "If you downloaded the Android command-line tools, this would be the folder " "where you extracted the contents of the ZIP archive." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:58 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:57 msgid "" "Windows: Press :kbd:`Windows + R`, type \"control system\", then click on " "**Advanced system settings** in the left pane, then click on **Environment " "variables** on the window that appears." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:62 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:61 msgid "" "Linux or macOS: Add the text ``export ANDROID_HOME=\"/path/to/android-" "sdk\"`` to your ``.bashrc`` or ``.zshrc`` where ``/path/to/android-sdk`` " "points to the root of the SDK directories." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:66 -msgid "Install the necessary SDK components in this folder:" -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:68 -msgid "" -"Accept the SDK component licenses by running the following command where " -"``android_sdk_path`` is the path to the Android SDK, then answering all the " -"prompts with ``y``:" -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:75 -msgid "" -"Complete setup by running the following command where ``android_sdk_path`` " -"is the path to the Android SDK." -msgstr "" - -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:81 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:65 msgid "" "After setting up the SDK and environment variables, be sure to **restart " "your terminal** to apply the changes. If you are using an IDE with an " "integrated terminal, you need to restart the IDE." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:85 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:69 msgid "" "Run ``scons platform=android``. If this fails, go back and check the steps. " "If you completed the setup correctly, the NDK will begin downloading. If you " @@ -158102,11 +161746,11 @@ msgid "" "download the NDK, then you can compile GDExtension." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:91 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:75 msgid "Building the export templates" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:93 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:77 msgid "" "Godot needs three export templates for Android: the optimized \"release\" " "template (``android_release.apk``), the debug template " @@ -158116,76 +161760,75 @@ msgid "" "containing both ARMv7 and ARMv8 libraries." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:99 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:83 msgid "" "Compiling the standard export templates is done by calling SCons from the " "Godot root directory with the following arguments:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:102 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:86 msgid "" "Release template (used when exporting with **Debugging Enabled** unchecked)" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:109 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:93 msgid "Debug template (used when exporting with **Debugging Enabled** checked)" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:116 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:100 msgid "(**Optional**) Dev template (used when troubleshooting)" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:123 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:107 msgid "The resulting templates will be located under the ``bin`` directory:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:125 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:109 msgid "``bin/android_release.apk`` for the release template" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:126 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:110 msgid "``bin/android_debug.apk`` for the debug template" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:127 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:111 msgid "``bin/android_dev.apk`` for the dev template" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:128 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:112 msgid "``bin/android_source.zip`` for the Gradle build template" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:132 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:116 msgid "" "If you are changing the list of architectures you're building, remember to " "add ``generate_android_binaries=yes`` to the *last* architecture you're " "building, so that the template files are generated after the build." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:134 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:118 msgid "" "To include debug symbols in the generated templates, add the " "``debug_symbols=yes`` parameters to the SCons command." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:136 -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:233 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:120 msgid "" "Note that you can include ``separate_debug_symbols=yes`` to generate the " "debug symbols in a separate ``*-native-debug-symbols.zip`` file." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:140 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:124 msgid "" "If you want to enable Vulkan validation layers, see :ref:`Vulkan validation " "layers on Android `." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:144 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:128 msgid "Adding support for x86 devices" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:146 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:130 msgid "" "If you also want to include support for x86 and x86_64 devices, run the " "SCons command a third and fourth time with the ``arch=x86_32``, and " @@ -158193,7 +161836,7 @@ msgid "" "for the release template:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:158 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:142 msgid "" "This will create template binaries that works on all platforms. The final " "binary size of exported projects will depend on the platforms you choose to " @@ -158201,20 +161844,20 @@ msgid "" "from the binary." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:164 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:148 msgid "Cleaning the generated export templates" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:166 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:150 msgid "" "You can use the following commands to remove the generated export templates:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:178 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:162 msgid "Using the export templates" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:180 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:164 msgid "" "Godot needs release and debug binaries that were compiled against the same " "version/commit as the editor. If you are using official binaries for the " @@ -158222,17 +161865,17 @@ msgid "" "own from the same version." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:185 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:169 msgid "" "When exporting your game, Godot uses the templates as a base, and updates " "their content as needed." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:188 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:172 msgid "Installing the templates" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:190 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:174 msgid "" "The newly-compiled templates (``android_debug.apk`` , " "``android_release.apk``, and ``android_source.zip``) must be copied to " @@ -158240,21 +161883,21 @@ msgid "" "can be located in:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:194 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:178 msgid "Windows: ``%APPDATA%\\Godot\\export_templates\\\\``" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:195 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:179 msgid "Linux: ``$HOME/.local/share/godot/export_templates//``" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:196 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:180 msgid "" "macOS: ``$HOME/Library/Application Support/Godot/export_templates//" "``" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:198 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:182 msgid "" "```` is of the form ``major.minor[.patch].status`` using values " "from ``version.py`` in your Godot source repository (e.g. ``4.1.3.stable`` " @@ -158262,7 +161905,7 @@ msgid "" "``version.txt`` file located next to your export templates." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:205 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:189 msgid "" "However, if you are writing your custom modules or custom C++ code, you " "might instead want to configure your template binaries as custom export " @@ -158270,66 +161913,73 @@ msgid "" "enabled to set this." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:211 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:195 msgid "" "You don't even need to copy them, you can just reference the resulting file " "in the ``bin\\`` directory of your Godot source folder, so that the next " "time you build you will automatically have the custom templates referenced." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:217 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:201 msgid "Building the Godot editor" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:219 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:203 msgid "" "Compiling the editor is done by calling SCons from the Godot root directory " "with the following arguments:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:229 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:213 msgid "" "You can add the ``dev_build=yes`` parameter to generate a dev build of the " "Godot editor." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:231 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:215 msgid "" "You can add the ``debug_symbols=yes`` parameters to include the debug " "symbols in the generated build." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:235 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:217 +msgid "" +"Note that you can include ``separate_debug_symbols=yes`` to the *last* " +"architecture you're building, to generate the debug symbols in a separate " +"``*-native-debug-symbols.zip`` file." +msgstr "" + +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:219 msgid "" "You can skip certain architectures depending on your target device to speed " "up compilation." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:237 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:221 msgid "" "Remember to add ``generate_android_binaries=yes`` to the *last* architecture " "you're building, so that binaries are generated after the build." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:239 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:223 msgid "" "The resulting binaries will be located under ``bin/android_editor_builds/``." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:242 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:226 msgid "Removing the Editor binaries" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:244 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:228 msgid "" "You can use the following commands to remove the generated editor binaries:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:255 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:239 msgid "Installing the Godot editor APK" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:257 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:241 msgid "" "With an Android device with Developer Options enabled, connect the Android " "device to your computer via its charging cable to a USB/USB-C port. Open up " @@ -158337,11 +161987,11 @@ msgid "" "directory with the following arguments:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:268 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:252 msgid "Platform doesn't appear in SCons" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:270 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:254 msgid "" "Double-check that you've set the ``ANDROID_HOME`` environment variable. This " "is required for the platform to appear in SCons' list of detected platforms. " @@ -158349,65 +161999,65 @@ msgid "" "` for more information." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:277 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:261 msgid "Application not installed" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:279 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:263 msgid "" "Android might complain the application is not correctly installed. If so:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:282 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:266 msgid "Check that the debug keystore is properly generated." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:283 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:267 msgid "Check that the jarsigner executable is from JDK 8." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:285 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:269 msgid "" "If it still fails, open a command line and run `logcat `_:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:291 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:275 msgid "" "Then check the output while the application is installed; the error message " "should be presented there. Seek assistance if you can't figure it out." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:296 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:280 msgid "Application exits immediately" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:298 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:282 msgid "" "If the application runs but exits immediately, this might be due to one of " "the following reasons:" msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:301 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:285 msgid "" "Make sure to use export templates that match your editor version; if you use " "a new Godot version, you *have* to update the templates too." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:303 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:287 msgid "" "``libgodot_android.so`` is not in ``libs//`` where ```` is the " "device's architecture." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:305 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:289 msgid "" "The device's architecture does not match the exported one(s). Make sure your " "templates were built for that device's architecture, and that the export " "settings included support for that architecture." msgstr "" -#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:309 +#: ../../docs/engine_details/development/compiling/compiling_for_android.rst:293 msgid "In any case, ``adb logcat`` should also show the cause of the error." msgstr "" @@ -158527,7 +162177,7 @@ msgid "To compile export templates for the Web, the following is required:" msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_web.rst:18 -msgid "`Emscripten 3.1.62+ `__." +msgid "`Emscripten 4.0.0+ `__." msgstr "" #: ../../docs/engine_details/development/compiling/compiling_for_web.rst:19 @@ -159275,8 +162925,8 @@ msgstr "" #: ../../docs/engine_details/development/compiling/optimizing_for_size.rst:81 msgid "" -"Godot 3.1 onwards allows compiling using size optimizations (instead of " -"speed). To enable this, set the ``optimize`` flag to ``size``:" +"It is possible to compile Godot using size optimizations (instead of speed). " +"To enable this, set the ``optimize`` flag to ``size``:" msgstr "" #: ../../docs/engine_details/development/compiling/optimizing_for_size.rst:88 @@ -159738,34 +163388,75 @@ msgid "" "profiler." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:16 +#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:15 +msgid "" +"There are two main types of profilers: sampling profilers and tracing " +"profilers." +msgstr "" + +#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:17 +msgid "" +"Sampling profilers periodically interrupt the running program and take a " +"\"sample\", which records which functions are running. Using this " +"information, the profiler estimates which functions the program spent the " +"most time in." +msgstr "" + +#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:21 +msgid "" +"Tracing profilers work by recording application-specific events (such as the " +"start and end of a single frame), producing a log called a \"trace\". The " +"profiler can use the trace to produce a graph showing an accurate high-level " +"timeline of what happened. However, any code that is not explicitly " +"instrumented will not appear in a tracing profiler's timeline!" +msgstr "" + +#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:27 +msgid "" +"Godot supports both sampling profilers and tracing profilers, and already " +"includes the logging code for common Godot events for use with a tracing " +"profiler!" +msgstr "" + +#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:30 +msgid "" +"Different problems may be easier to debug with one kind of profiler over the " +"other, but it's difficult to provide a set of rules for which to use. Give " +"both a try, and see what you can learn from them!" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:4 +msgid "Sampling profilers" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:7 msgid "Recommended profilers" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:18 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:9 msgid "`VerySleepy `__ (Windows only)" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:19 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:10 msgid "`HotSpot `__ (Linux only)" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:20 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:11 msgid "`Xcode Instruments `__ (macOS only)" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:22 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:13 msgid "" "These profilers may not be the most powerful or flexible options, but their " "standalone operation and limited feature set tends to make them easier to " "use." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:26 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:17 msgid "Setting up Godot" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:28 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:19 msgid "" "To get useful profiling information, it is **absolutely required** to use a " "Godot build that includes debugging symbols. Official binaries do not " @@ -159773,55 +163464,55 @@ msgid "" "significantly larger." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:32 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:23 msgid "" "To get profiling data that best matches the production environment (but with " "debugging symbols), you should compile binaries with the ``production=yes " "debug_symbols=yes`` SCons options." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:35 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:26 msgid "" "It is possible to run a profiler on less optimized builds (e.g. " "``target=template_debug`` without LTO), but results will naturally be less " "representative of real world conditions." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:40 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:31 msgid "" "Do *not* strip debugging symbols on the binaries using the ``strip`` command " "after compiling the binaries. Otherwise, you will no longer get useful " "profiling information when running a profiler." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:45 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:36 msgid "Benchmarking startup/shutdown times" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:47 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:38 msgid "" "If you're looking into optimizing Godot's startup/shutdown performance, you " "can tell the profiler to use the ``--quit`` command line option on the Godot " -"binary. This will exit Godot just after it finished starting. The ``--quit`` " -"option works with ``--editor``, ``--project-manager`` or ``--path `` (which runs a project directly)." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:55 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:46 msgid "" "See :ref:`doc_command_line_tutorial` for more command line arguments " "supported by Godot." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:59 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:50 msgid "Profiler-specific instructions" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:62 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:53 msgid "VerySleepy" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:64 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:55 msgid "" "Start the Godot editor or your project first. If you start the Project " "Manager, make sure to edit or run a project first. Otherwise, the profiler " @@ -159829,27 +163520,27 @@ msgid "" "child process for every project edited or run." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:68 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:59 msgid "" "Open VerySleepy and select the Godot executable in the list of processes on " "the left:" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:72 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:63 msgid "Click the **Profile All** button on the right to start profiling." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:73 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:64 msgid "" "Perform the actions you wish to profile in the editor or project. When " "you're done, click **Stop** (*not* Abort)." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:74 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:65 msgid "Wait for the results window to appear." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:75 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:66 msgid "" "Once the results window appears, filter the view to remove external modules " "(such as the graphics driver). You can filter by module by finding a line " @@ -159858,65 +163549,65 @@ msgid "" "that appears." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:79 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:70 msgid "Your results window should now look something like this:" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:84 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:75 msgid "HotSpot" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:86 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:77 msgid "Open HotSpot. Click **Record Data**:" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:90 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:81 msgid "" "In the next window, specify the path to the Godot binary that includes debug " "symbols." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:91 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:82 msgid "" "Specify command line arguments to run a specific project, with or without " "the editor." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:92 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:83 msgid "" "The path to the working directory can be anything if an absolute path is " -"used for the ``--path`` command line argument. Otherwise, it must be set to " +"used for the ``--path`` command line argument. Otherwise, it must be set so " "that the relative path to the project is valid." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:95 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:86 msgid "" "Make sure **Elevate Privileges** is checked if you have administrative " "privileges. While not essential for profiling Godot, this will ensure all " -"events can be captured. Otherwise, some events may be missing in the " +"events can be captured. Otherwise, some events may be missing from the " "capture. Your settings should now look something like this:" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:102 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:93 msgid "" "Click **Start Recording** and perform the actions you wish to profile in the " "editor/project." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:103 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:94 msgid "" "Quit the editor/project normally or use the **Stop Profiling** button in " "HotSpot to stop profiling early. Stopping profiling early can result in " -"cleaner profiles if you're not interested in the engine's quit procedure." +"cleaner profiles if you're not interested in the engine's shutdown procedure." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:106 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:97 msgid "" "Click **View Results** and wait for the profiling visualization to be " "generated:" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:110 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:101 msgid "" "Use the tabs at the top to navigate between the different views. These views " "show the same data, but in different ways. The **Flame Graph** tab is a good " @@ -159925,15 +163616,15 @@ msgid "" "optimizing them will improve performance the most." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:115 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:106 msgid "" "At the bottom of all tabs except **Summary**, you will also see a list of " -"CPU threads started by the engine among with the CPU utilization for each " +"CPU threads started by the engine along with the CPU utilization for each " "thread. This lets you see threads that can be a bottleneck at a given point " "in time." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:123 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:114 msgid "" "If you don't want the startup procedure to be included in the profile, you " "can also attach HotSpot to a running process by clicking **Record Data** " @@ -159941,72 +163632,366 @@ msgid "" "Process(es)**." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:128 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:119 msgid "" "This process attachment-based workflow is similar to the one used by " "VerySleepy." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:131 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:122 msgid "Xcode Instruments" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:133 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:124 msgid "" "Open Xcode. Select **Open Developer Tool** - **Instruments** from the " "**Xcode** app menu:" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:134 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:125 msgid "Double-click on **Time Profiler** in the **Instruments** window:" msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:138 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:129 msgid "" "In the Time Profiler window, click on the **Target** menu, select **Choose " -"target...** and specify the path to the Godot binary, command line arguments " -"and environment variables in the next window." +"target...** and specify the path to the Godot binary, command line " +"arguments, and environment variables in the next window." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:144 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:135 msgid "" "You can also attach the Time Profiler to a running process by selecting it " "from the **Target** menu." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:147 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:138 msgid "" "Click the **Start an immediate mode recording** button to start profiling." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:151 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:142 msgid "" "Perform the actions you wish to profile in the editor or project. When " "you're done, click the **Stop** button." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:154 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:145 msgid "Wait for the results to appear." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:155 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:146 msgid "" "At the bottom of the window you will see a call tree for all CPU threads " "started, and the **Heaviest Stack Trace** overview." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:157 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:148 msgid "" "Select **Hide system libraries** in the **Call Tree** menu (at the bottom of " -"window) to remove external modules." +"the window) to remove external modules." msgstr "" -#: ../../docs/engine_details/development/debugging/using_cpp_profilers.rst:159 +#: ../../docs/engine_details/development/debugging/profiling/sampling_profilers.rst:150 msgid "" "You can use the timeline at the top of the window to display details for the " "specific time period." msgstr "" +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:4 +msgid "Tracing Profilers" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:6 +msgid "" +"Godot currently supports two tracing profilers: `Tracy `__ and `Perfetto `__." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:9 +msgid "" +"In order to use either of them, you'll need to build the engine from source. " +"If you've never done this before, please read :ref:`these docs " +"` for the platform you want to profile on. You'll need " +"to perform the same steps here, but with some additional arguments for " +"``scons``." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:18 +msgid "Tracy for Windows, Linux, and macOS" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:20 +msgid "" +"Tracy is an Open Source profiler that runs on a wide variety of platforms, " +"including Windows, Linux, and macOS. While it is primarily a tracing " +"profiler, it can also periodically sample data like a :ref:`sampling " +"profiler `, giving some of the benefits of both " +"approaches." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:27 +msgid "Build Godot with Tracy support" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:29 +msgid "" +"First, clone the latest version of the Tracy source code (\"0.13.0\" at the " +"time of writing) using Git:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:36 +msgid "This will create a ``tracy`` directory - you can place this anywhere." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:38 +msgid "" +"Next, build the release templates for your platform using ``scons``, but " +"adding the ``profiler=tracy profiler_path=path/to/tracy`` arguments with the " +"real path to the ``tracy`` directory, as well as ``debug_symbols=yes`` to " +"allow Tracy's sampling features to work." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:45 +msgid "" +"You don't have to build release templates, you could also build debug " +"templates, or even the editor. However, it's generally recommended to " +"profile release templates, because that is the version your players will " +"use, and it will perform differently than other types of builds." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:50 +msgid "For example, to build release templates for Windows:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:57 +msgid "Get the Tracy \"server\"" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:59 +msgid "" +"In Tracy terminology, the application you are profiling is the \"client\", " +"and the one receiving the data is the \"server\"." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:62 +msgid "" +"If you are on Windows, you can download a pre-built ``tracy-profiler.exe`` " +"from the Tracy `releases page `_." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:65 +msgid "" +"However, if you're on Linux or macOS, you'll either need to find a pre-built " +"binary from a package manager (like ``brew`` or ``nix``), or build it from " +"source yourself." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:71 +msgid "" +"If you do use a pre-built binary, be sure to use the same version that you " +"used when building Godot." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:75 +msgid "Build the Tracy server from source" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:77 +msgid "" +"In order to build Tracy, you'll need to install ``cmake``, which can be " +"downloaded from the `CMake website `_, or " +"possibly installed via a package manager (like ``brew`` or ``nix``)." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:81 +msgid "" +"The full instructions for building Tracy from source can be found in the " +"`Tracy manual `_, but here is the TL;DR:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:91 +msgid "" +"This will place the binary at ``tracy/profiler/build/tracy-profiler`` or " +"``tracy/profiler/build/tracy-profiler.exe`` (on Windows)." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:95 +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:198 +msgid "Record a trace" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:97 +msgid "Launch the Tracy server - you'll see something like this:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:101 +msgid "" +"Press \"connect\". This will ensure tracy makes a connection immediately " +"when the game launches. If you forget to press \"connect\", Tracy will store " +"system events in RAM, which can quickly blow up your memory usage (see the " +"``TRACY_ON_DEMAND`` documentation)." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:106 +msgid "" +"Now, export your game using the release templates you built above, and run " +"it. As soon as both are running, and you have pressed the \"Connect\" button " +"in Tracy, you'll see data coming in:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:112 +msgid "" +"When you think you've gathered enough data, press the \"Stop\" button. If " +"you clicked somewhere and the box with the \"Stop\" button disappeared, you " +"can click the top-left most icon to bring it back." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:117 +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:216 +msgid "Examining the trace" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:119 +msgid "Here are some of the basic controls:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:121 +msgid "Zoom in/out with the mouse wheel" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:122 +msgid "Right click and drag to move forward/backward on the timeline" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:123 +msgid "" +"In the top bar, click the left and right arrow buttons by \"Frames\" to move " +"a single frame on the timeline" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:125 +msgid "" +"To learn more, see the `Tracy manual `_." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:129 +msgid "Perfetto for Android" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:131 +msgid "" +"Perfetto is the default tracing system for Android. In fact, its system " +"tracing service has been built into the platform since Android 9." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:135 +msgid "Build Godot with Perfetto support" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:137 +msgid "" +"First, clone the latest version of the Perfetto source code (\"53.0\" at the " +"time of writing) using Git:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:144 +msgid "" +"This will create a ``perfetto`` directory - you can place this anywhere." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:146 +msgid "" +"Next, build the Android debug or release templates for your architecture " +"using ``scons`` (per :ref:`Compiling for Android " +"`), but adding the ``profiler=perfetto " +"profiler_path=path/to/perfetto`` arguments with the real path to the " +"``perfetto`` directory." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:153 +msgid "" +"It's generally recommended to profile release templates, because that is the " +"version your players will use, and it will perform differently than other " +"types of builds. However, in the case of Android, it can sometimes be useful " +"to use debug templates, because Godot can only do remote debugging of games " +"exported from debug templates." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:159 +msgid "For example, to build the release templates for arm64:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:168 +msgid "" +"Perfetto requires a configuration file to tell it which events to track." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:170 +msgid "" +"Create a file called ``godot.config`` inside of the ``perfetto`` directory " +"with this content:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:200 +msgid "" +"Finally, launch your game on an Android device using the export templates " +"you built earlier." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:203 +msgid "" +"When you're ready to record a trace (for example, when you've hit the part " +"of your game that is exhibiting performance issues), you can use this script " +"that comes with the Perfetto source code:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:212 +msgid "" +"This will record for 10 seconds (per the configuration), or until you " +"press :kbd:`Ctrl + C`." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:218 +msgid "" +"As soon as that script exits, it will launch the Perfetto UI in a web " +"browser." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:220 +msgid "" +"To see the Godot events, expand the row for your application by clicking on " +"its Android \"Unique Name\" (Perfetto will also include some events from " +"system services in the trace)." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:226 +msgid "Then you can use the ``WASD`` keys to navigate the graph:" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:228 +msgid "" +"Press :kbd:`A` or :kbd:`D` to navigate forward or backward along the timeline" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:229 +msgid "Press :kbd:`W` or :kbd:`S` to zoom in or out" +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:231 +msgid "" +"You'll probably need to zoom a bit before you're able to see the individual " +"events from Godot." +msgstr "" + +#: ../../docs/engine_details/development/debugging/profiling/tracing_profilers.rst:234 +msgid "" +"To learn more, see the `Perfetto UI documentation `_." +msgstr "" + #: ../../docs/engine_details/development/debugging/using_sanitizers.rst:4 msgid "Using sanitizers" msgstr "" @@ -160435,20 +164420,20 @@ msgid "" "validation error occurs." msgstr "" -#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:137 -msgid "" -"After enabling validation layers on Android, a developer can see errors and " -"warning messages in the ``adb logcat`` output." +#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:135 +msgid "Validation layers are currently **not** supported on iOS." msgstr "" -#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:143 -msgid "Validation layers are currently **not** supported on iOS." +#: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:140 +msgid "" +"Validation layers are **not** supported on the web platform, as there is no " +"support for Vulkan there." msgstr "" #: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:148 msgid "" -"Validation layers are **not** supported on the web platform, as there is no " -"support for Vulkan there." +"After enabling validation layers on Android, a developer can see errors and " +"warning messages in the ``adb logcat`` output." msgstr "" #: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:152 @@ -160574,38 +164559,80 @@ msgstr "" #: ../../docs/engine_details/development/handling_compatibility_breakages.rst:117 msgid "" -"And finally, the changes reported by the API validation step should be added " -"to the relevant validation file. Because this was done during the " -"development of 4.3, this would be ``misc/extension_api_validation/4.2-" -"stable.expected`` (including changes not shown in this example):" +"Finally, the GDExtension API changes need to be recorded. To do this, first " +"compile Godot on the ``master`` branch, and then run it with the ``--dump-" +"extension-api`` flag:" msgstr "" -#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:121 -msgid "misc/extension_api_validation/4.2-stable.expected" -msgstr "" - -#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:136 +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:126 msgid "" -"The instructions for how to add to that file are at the top of the file " -"itself." +"This will create a file named ``extension_api.json`` in your current " +"directory. Switch to your feature branch, recompile Godot, and then run it " +"with the ``--validate-extension-api`` flag followed by the path to the " +"``extension_api.json`` file you just generated:" msgstr "" -#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:138 +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:135 msgid "" -"If you get a \"Hash changed\" error for a method, it means that the " +"This will generate some lines starting with ``Validate extension JSON`` like " +"so:" +msgstr "" + +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:148 +msgid "" +"If you get a ``Hash changed`` error for a method, it means that the " "compatibility binding is missing or incorrect. Such lines shouldn't be added " -"to the ``.expected`` file, but fixed by binding the proper compatibility " +"to the validation file, but fixed by binding the proper compatibility " +"method. Make sure to double-check the following:" +msgstr "" + +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:152 +msgid "" +"For the compatibility method (the one whose name ends with the PR number), " +"the argument types, names, and default values must be identical to the " +"version of the method from before your changes." +msgstr "" + +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:154 +msgid "" +"In ``_bind_compatibility_methods()``, argument names provided to the " +"``D_METHOD()`` macro in ``ClassDB::bind_compatibility_method()`` must be " +"identical to those from the ``ClassDB::bind_method()`` call for the original " "method." msgstr "" -#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:141 +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:157 +msgid "" +"Add these lines, followed by a comment explaining what the API change was " +"and the actions taken to prevent breakage, to a validation file named after " +"the GitHub pull request ID and placed in the folder of the Godot version it " +"would have broken compatibility for." +msgstr "" + +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:160 +msgid "" +"Since this example was for PR #88047, its file name would be " +"``GH-88047.txt``, and because this was done during the development of 4.3 " +"(thus changing from 4.2), the file would be in the ``misc/" +"extension_api_validation/4.2-stable/`` folder." +msgstr "" + +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:163 +msgid "See below for a complete example of such a file for this PR:" +msgstr "" + +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:165 +msgid "misc/extension_api_validation/4.2-stable/GH-88047.txt" +msgstr "" + +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:180 msgid "" "And that's it! You might run into a bit more complicated cases, like " "rearranging arguments, changing return types, etc., but this covers the " -"basic on how to use this system." +"basics on how to use this system." msgstr "" -#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:144 +#: ../../docs/engine_details/development/handling_compatibility_breakages.rst:183 msgid "" "For more information, see `pull request #76446 `_." @@ -160704,34 +164731,34 @@ msgstr "" #: ../../docs/engine_details/editor/introduction_to_editor_development.rst:49 msgid "" -"`editor/project_manager.cpp `__: Main Project Manager initialization " -"file. Effectively the \"main scene\" of the Project Manager." +"`editor/project_manager/project_manager.cpp `__: Main " +"Project Manager initialization file. Effectively the \"main scene\" of the " +"Project Manager." msgstr "" #: ../../docs/engine_details/editor/introduction_to_editor_development.rst:51 msgid "" -"`editor/plugins/canvas_item_editor_plugin.cpp `__: The 2D editor viewport and related " -"functionality (toolbar at the top, editing modes, overlaid helpers/panels, " -"…)." +"`editor/scene/canvas_item_editor_plugin.cpp `__: The 2D " +"editor viewport and related functionality (toolbar at the top, editing " +"modes, overlaid helpers/panels, …)." msgstr "" #: ../../docs/engine_details/editor/introduction_to_editor_development.rst:53 msgid "" -"`editor/plugins/node_3d_editor_plugin.cpp `__: The 3D " +"`editor/scene/3d/node_3d_editor_plugin.cpp `__: The 3D " "editor viewport and related functionality (toolbar at the top, editing " "modes, overlaid panels, …)." msgstr "" #: ../../docs/engine_details/editor/introduction_to_editor_development.rst:55 msgid "" -"`editor/plugins/node_3d_editor_gizmos.cpp `__: Where the 3D " -"editor gizmos are defined and drawn. This file doesn't have a 2D counterpart " -"as 2D gizmos are drawn by the nodes themselves." +"`editor/scene/3d/node_3d_editor_gizmos.cpp `__: Where the " +"3D editor gizmos are defined and drawn. This file doesn't have a 2D " +"counterpart as 2D gizmos are drawn by the nodes themselves." msgstr "" #: ../../docs/engine_details/editor/introduction_to_editor_development.rst:60 @@ -162611,8 +166638,8 @@ msgid "" "GDQuest's *Learn GDScript From Zero* is a free and open source interactive " "tutorial for absolute beginners to learn to program with Godot's GDScript " "language. It is available as a `desktop application `_ or `in the browser `_." +"learn-godot-gdscript>`__ or `in the browser `__." msgstr "" #: ../../docs/community/tutorials.rst:20