Несколько резолюций

Проблема множественных резолюций

Разработчики часто не понимают, как лучше всего реализовать поддержку нескольких разрешений в своих играх. Для игр для настольных компьютеров и консолей это более или менее просто, поскольку большинство экранов имеют соотношение сторон 16:9, а разрешения стандартны (720p, 1080p, 1440p, 4K и т. д.).

Для мобильных игр поначалу всё было просто. Долгие годы iPhone и iPad использовали одинаковое разрешение. С появлением Retina плотность пикселей просто удвоилась; большинству разработчиков пришлось предоставлять ресурсы в разрешениях по умолчанию и в удвоенном разрешении.

В наши дни это уже не так, поскольку существует множество различных размеров экранов, плотностей пикселей и соотношений сторон. Нестандартные размеры также становятся всё более популярными, например, сверхширокие дисплеи.

Для 3D-рендеринга поддержка нескольких разрешений не так уж и важна. Благодаря своей векторной природе, трёхмерная геометрия просто заполнит экран в соответствии с размером области просмотра. Для 2D-графики и игровых интерфейсов всё обстоит иначе, поскольку графика должна создаваться с использованием определённых размеров пикселей в таких программах, как Photoshop, GIMP или Krita.

Поскольку макеты, соотношения сторон, разрешения и плотность пикселей могут меняться настолько сильно, проектировать пользовательский интерфейс для каждого конкретного экрана уже невозможно. Необходимо использовать другой метод.

Один размер подходит всем

Самый распространённый подход — использовать одно базовое разрешение и затем подгонять его под всё остальное. Именно в таком разрешении большинство игроков, как ожидается, будут играть (с учётом их оборудования). Для мобильных устройств Google предлагает полезную статистику <https://developer.android.com/about/dashboards>`_, а для настольных компьютеров — Steam <https://store.steampowered.com/hwsurvey/>`_.

Например, Steam показывает, что наиболее распространенное основное разрешение дисплея — 1920×1080, поэтому разумным подходом будет разработать игру для этого разрешения, а затем выполнить масштабирование для различных размеров и соотношений сторон.

Godot предоставляет несколько полезных инструментов, чтобы сделать это легко.

См. также

Вы можете увидеть, как работает поддержка нескольких разрешений в Godot, используя демонстрационный проект Множественные разрешения и соотношения сторон.

Базовый размер

Базовый размер окна можно указать в настройках проекта в разделе Display → Window.

../../_images/screenres.webp

Однако суть этого действия не совсем очевидна: движок не будет пытаться переключить монитор на это разрешение. Скорее, представьте эту настройку как "размер дизайна", то есть размер области, с которой вы работаете в редакторе. Эта настройка напрямую соответствует размеру синего прямоугольника в 2D-редакторе.

Часто возникает необходимость в поддержке устройств с размерами экрана и окна, отличными от базового. Godot предлагает множество способов управления изменением размера и растягиванием области просмотра под разные размеры экрана.

Примечание

На этой странице window относится к области экрана, выделенной вашей игре системой, а viewport — к корневому объекту (доступному через get_tree().root), которым игра управляет для заполнения этой области экрана. Эта область просмотра представляет собой экземпляр Window. Как следует из введения introduction, все объекты Window являются областями просмотра.

Чтобы настроить базовый размер растягиваемого изображения во время выполнения скрипта, используйте свойство get_tree().root.content_scale_size (см. Window.content_scale_size). Изменение этого значения может косвенно влиять на размер 2D-элементов. Однако для предоставления пользователю возможности масштабирования рекомендуется использовать Масштаб растяжения, поскольку его проще настраивать.

Примечание

Godot следует современному подходу к работе с несколькими разрешениями. Движок никогда не меняет разрешение монитора самостоятельно. Хотя изменение разрешения монитора — самый эффективный подход, это также и самый ненадёжный, поскольку он может привести к тому, что монитор останется на низком разрешении, если игра зависнет. Это особенно распространено в macOS и Linux, которые не так хорошо обрабатывают смену разрешения, как Windows.

Изменение разрешения монитора также лишает разработчика игры возможности контролировать фильтрацию и растяжение соотношения сторон, что может быть важно для обеспечения корректного отображения в играх с пиксельной графикой.

Вдобавок ко всему, изменение разрешения монитора значительно замедляет переключение между играми с помощью сочетания клавиш Alt-Tab, поскольку монитору каждый раз приходится менять разрешение.

Изменение размера

Существует несколько типов устройств с экранами разных типов, которые, в свою очередь, имеют разную плотность пикселей и разрешение. Работа со всеми ними может потребовать немало усилий, поэтому Godot старается немного облегчить жизнь разработчикам. Узел Viewport имеет несколько функций для управления изменением размера, а корневой узел дерева сцены всегда является областью просмотра (загружаемые сцены создаются как её дочерние экземпляры, и к ней всегда можно получить доступ, вызвав get_tree().root или get_node("/root")).

В любом случае, хотя изменение параметров корневого Viewport, вероятно, является наиболее гибким способом решения проблемы, это может потребовать много работы, кода и догадок, поэтому Godot предоставляет набор параметров в настройках проекта для работы с несколькими разрешениями.

Совет

Для рендеринга 3D-элементов с более низким разрешением, чем 2D-элементы (без необходимости использования отдельных областей просмотра), можно использовать поддержку Godot resolution scaling. Это хороший способ значительно повысить производительность в условиях ограниченных возможностей графического процессора. Этот подход работает с любым режимом растяжения и комбинацией аспектов растяжения.

Настройки растяжения

Настройки растяжения находятся в настройках проекта и предоставляют несколько вариантов:

../../_images/stretchsettings.webp

Режим растяжения

Параметр Stretch Mode определяет, как базовый размер растягивается в соответствии с разрешением окна или экрана. В приведенных ниже анимациях используется "базовый размер" всего 16×9 пикселей для демонстрации эффекта различных режимов растяжения. Один спрайт, также размером 16×9 пикселей, покрывает всю область просмотра, а поверх него добавляется диагональный элемент Line2D:

../../_images/stretch_demo_scene.png
  • Stretch Mode = Disabled (по умолчанию): растяжение не происходит. Одна единица измерения в сцене соответствует одному пикселю на экране. В этом режиме параметр Stretch Aspect не действует.

    ../../_images/stretch_disabled_expand.gif
  • Stretch Mode = Canvas Items: В этом режиме базовый размер, заданный в настройках проекта (ширина и высота), растягивается на весь экран (с учётом параметра Stretch Aspect). Это означает, что всё отображается непосредственно в целевом разрешении. 3D-графика остаётся неизменной, тогда как в 2D соответствие 1:1 между пикселями спрайта и пикселями экрана нарушается, что может привести к появлению артефактов масштабирования.

    ../../_images/stretch_2d_expand.gif
  • Stretch Mode = Viewport: Масштабирование области просмотра означает, что размер корневого объекта Viewport устанавливается точно в соответствии с базовым размером, указанным в разделе Display в настройках проекта. Сцена сначала визуализируется в этой области просмотра. Затем эта область просмотра масштабируется по размеру экрана (с учётом параметра Stretch Aspect).

    ../../_images/stretch_viewport_expand.gif

Чтобы настроить режим растяжения во время выполнения из скрипта, используйте свойство get_tree().root.content_scale_mode (см. Window.content_scale_mode и перечисление ContentScaleMode).

Соотношение растяжений

Вторая настройка — это аспект растяжения (stretch aspect). Обратите внимание, что он действует только в том случае, если для параметра Stretch Mode установлено значение, отличное от Disabled.

На анимациях ниже вы заметите серые и чёрные области. Чёрные области добавляются движком и не могут быть отрисованы. Серые области являются частью вашей сцены и могут быть отрисованы. Серые области соответствуют области за пределами синей рамки, которую вы видите в 2D-редакторе.

  • Stretch Aspect = Ignore: Игнорировать соотношение сторон при растяжении экрана. Это означает, что исходное разрешение будет растянуто до полного заполнения экрана, даже если он шире или уже. Это может привести к неравномерному растяжению: объекты будут выглядеть шире или выше, чем задумано.

    ../../_images/stretch_viewport_ignore.gif
  • Stretch Aspect = Keep: Сохранять соотношение сторон при растяжении экрана. Это означает, что область просмотра сохраняет свой исходный размер независимо от разрешения экрана, а сверху/снизу экрана ("letterboxing") или по бокам ("pillarboxing") добавляются чёрные полосы.

    Это хороший вариант, если вы заранее знаете соотношение сторон целевых устройств или не хотите иметь дело с разными соотношениями сторон.

    ../../_images/stretch_viewport_keep.gif
  • Stretch Aspect = Keep Width: Сохранять пропорции при растяжении экрана. Если экран шире базового размера, слева и справа добавляются чёрные полосы (pillarboxing). Но если экран выше базового разрешения, область просмотра будет расширена по вертикали (и больше контента будет видно внизу). Это также можно назвать "Расширение по вертикали".

    Обычно это лучший вариант для создания масштабируемых графических интерфейсов (GUIs) или HUD, поэтому некоторые элементы управления можно прикрепить к нижней части (Размер и якоря).

    ../../_images/stretch_viewport_keep_width.gif
  • Stretch Aspect = Keep Height: Сохранять пропорции при растяжении экрана. Если экран выше базового размера, сверху и снизу добавляются чёрные полосы (letterboxing). Но если экран шире базового разрешения, область просмотра будет расширена по горизонтали (и больше контента будет видно справа). Это также можно назвать «Расширить горизонтально».

    Обычно это лучший вариант для 2D-игр с горизонтальной прокруткой (типа раннеров или платформеров).

    ../../_images/stretch_viewport_keep_height.gif
  • Stretch Aspect = Expand: Cохранить пропорции при растяжении экрана, но не сохранить базовую ширину и высоту. В зависимости от пропорций экрана область просмотра будет больше либо по горизонтали (если экран шире базового размера), либо по вертикали (если экран выше исходного размера).

    ../../_images/stretch_viewport_expand.gif

Совет

Чтобы поддерживать как портретный, так и альбомный режимы с одинаковым автоматически определяемым масштабом, установите базовое разрешение проекта как квадрат (соотношение сторон 1:1), а не как прямоугольник. Например, если вы хотите использовать базовое разрешение 1280×720, но при этом поддерживать как портретный, так и альбомный режимы, используйте 720×720 в качестве базового размера окна проекта в Настройках Проекта.

Чтобы пользователь мог выбирать предпочтительную ориентацию экрана во время выполнения, не забудьте установить для параметра Display > Window > Handheld > Orientation значение sensor.

Чтобы настроить аспект растяжения во время выполнения из скрипта, используйте свойство get_tree().root.content_scale_aspect (см. Window.content_scale_aspect и перечисление ContentScaleAspect).

Масштаб растяжения

Параметр Scale позволяет добавить дополнительный коэффициент масштабирования к уже существующему коэффициенту Stretch. Значение по умолчанию 1.0 означает, что дополнительное масштабирование не производится.

Например, если установить Scale на 2.0 и оставить Stretch Mode на Disabled, каждая единица измерения в сцене будет соответствовать 2×2 пикселям на экране. Это хороший способ обеспечить возможности масштабирования для неигровых приложений.

Если для параметра Stretch Mode задано значение canvas_items, 2D-элементы будут масштабироваться относительно базового размера окна, а затем умножаться на значение параметра Scale. Игрокам будет предоставлена возможность настроить автоматически определяемый масштаб по своему усмотрению для лучшей доступности.

Если для параметра Stretch Mode задано значение viewport, разрешение области просмотра делится на Scale. Это увеличивает размер пикселей и снижает разрешение рендеринга (при заданном размере окна), что может повысить производительность.

Чтобы настроить масштаб растяжения во время выполнения из скрипта, используйте свойство get_tree().root.content_scale_factor (см. Window.content_scale_factor).

Вы также можете настроить масштаб, в котором генерируется тема проекта по умолчанию, с помощью параметра проекта GUI > Theme > Default Theme Scale. Это можно использовать для создания более логичных пользовательских интерфейсов с базовыми разрешениями, значительно выше или ниже значения по умолчанию. Однако этот параметр проекта нельзя изменить во время выполнения, поскольку его значение считывается только один раз при запуске проекта.

Режим Растяжения Шкалы

Начиная с Godot 4.2, параметр Stretch Scale Mode позволяет ограничить автоматически определяемый масштабный коэффициент (а также заданный вручную параметр Stretch Scale) целыми значениями. По умолчанию этот параметр установлен на fractional, что позволяет применять любой масштабный коэффициент (включая дробные значения, например, 2.5). При выборе значения integer значение округляется до ближайшего целого числа. Например, вместо коэффициента 2.5 оно будет округлено до 2.0. Это полезно для предотвращения искажений при отображении пиксельной графики.

Сравните это пиксельное изображение, отображаемое в режиме растяжения viewport, при этом режим растяжения масштаба установлен на fractional:

Пример дробного масштабирования (неправильный вид пиксельной графики)

Шахматная доска не выглядит "ровной". Толщина линий в логотипе и тексте сильно различается.

Этот пиксельный рисунок также отображается в режиме растяжения viewport, но на этот раз режим растяжения масштаба установлен на integer:

Пример целочисленного масштабирования (правильный вид пиксельной графики)

Шахматная доска выглядит идеально ровной. Толщина линий одинаковая.

Например, если базовый размер области просмотра составляет 640×360, а размер окна — 1366×768:

  • При использовании дробного разрешения область просмотра отображается с разрешением 1366×768 (масштабный коэффициент примерно равен 2,133×). Используется всё пространство окна. Каждый пиксель области просмотра соответствует 2,133×2,133 пикселя в отображаемой области. Однако, поскольку дисплеи могут отображать только «целые» пиксели, это приведёт к неравномерному масштабированию пикселей, что, в свою очередь, приведёт к некорректному отображению пиксельной графики.

  • При использовании integer область просмотра отображается с разрешением 1280×720 (масштабный коэффициент — 2×). Остальное пространство заполняется чёрными полосами со всех четырёх сторон, так что каждый пиксель области просмотра соответствует 2×2 пикселям отображаемой области.

Этот параметр действует при любом режиме растяжения. Однако при использовании режима растяжения disabled он влияет только на параметр Stretch Scale, округляя его в меньшую сторону до ближайшего целого значения. Это можно использовать в 3D-играх с пиксельной графикой, чтобы видимая область в 3D-окне просмотра не уменьшалась в размере (что происходит при использовании режима растяжения canvas_items или viewport с режимом масштабирования integer).

Совет

Игры должны использовать режим окна Exclusive Fullscreen, а не Fullscreen, который предназначен для того, чтобы Окно не могло автоматически обрабатывать окно как эксклюзивный полноэкранный режим.

Режим Fullscreen предназначен для графических приложений, которым требуется попиксельная прозрачность без риска её отключения операционной системой. Это достигается за счёт однопиксельной линии внизу экрана. В отличие от этого, режим Exclusive Fullscreen использует фактический размер экрана и позволяет Windows уменьшить дрожание и задержку ввода в полноэкранных играх.

При использовании целочисленного масштабирования это особенно важно, поскольку уменьшение высоты на 1 пиксель в Fullscreen режиме может привести к тому, что при целочисленном масштабировании будет использоваться меньший масштабный коэффициент, чем ожидалось.

Распространенные сценарии использования

Для хорошей поддержки различных разрешений и соотношений сторон рекомендуется использовать следующие настройки.

Игра для десктопа

Не пиксельная рисовка:

  • Установите базовую ширину окна на 1920 и высоту окна на 1080. Если разрешение вашего дисплея меньше 1920×1080, уменьшите значения параметров Window Width Override и Window Height Override, чтобы уменьшить размер окна при запуске проекта.

  • Если вы ориентируетесь в первую очередь на высокопроизводительные устройства, установите базовую ширину окна на 3840, а высоту — на 2160. Это позволит вам использовать 2D-объекты с более высоким разрешением, что обеспечит более чёткую графику за счёт увеличения потребления памяти и размера файлов. Также рекомендуется увеличить значение параметра GUI > Theme > Default Theme Scale до значения в диапазоне от 2.0 до 3.0, чтобы элементы интерфейса оставались читабельными.

  • Установите режим растяжения на canvas_items.

  • Установите аспект растяжения на expand. Это обеспечивает поддержку различных соотношений сторон и позволяет эффективнее использовать вытянутые экраны смартфонов (например, с соотношением сторон 18:9 или 19:9).

  • Настройте Control узлов управления для привязки к правильным углам с помощью меню Layout.

  • Для 3D-игр рассмотрите возможность добавления параметра Масштабирование разрешения в меню настроек игры, чтобы игроки могли настраивать разрешение 3D-рендеринга отдельно от элементов пользовательского интерфейса. Это полезно для настройки производительности, особенно на слабом оборудовании.

Пиксельная рисовка:

  • Установите базовый размер окна равным размеру области просмотра, которую вы планируете использовать. В большинстве игр с пиксельной графикой используются области просмотра размером от 256×224 до 640×480. 640×360 — хороший базовый размер, так как он масштабируется до разрешений 1280×720, 1920×1080, 2560×1440 и 3840×2160 без чёрных полос при целочисленном масштабировании. Более высокие размеры области просмотра потребуют использования изображений с более высоким разрешением, если только вы не планируете отображать больше игрового мира одновременно.

  • Установите режим растяжения на viewport.

  • Установите для параметра растяжения значение keep, чтобы обеспечить единое соотношение сторон (с чёрными полосами). В качестве альтернативы, для параметра растяжения можно установить значение expand, чтобы поддерживать несколько соотношений сторон.

  • При использовании аспекта растяжения expand настройте якоря узлов управления для привязки к правильным углам с помощью меню Layout.

  • Установите режим масштабирования растяжения на integer. Это предотвращает неравномерное масштабирование пикселей, из-за которого пиксельная графика отображается некорректно.

Примечание

Режим растяжения viewport обеспечивает рендеринг в низком разрешении, который затем растягивается до конечного размера окна. Если вас устраивает возможность перемещения или вращения спрайтов в "sub-pixel" позициях или вы хотите иметь 3D-область просмотра с высоким разрешением, используйте режим растяжения canvas_items вместо режима растяжения viewport.

Мобильная игра в ландшафтном режиме

Godot по умолчанию настроен на использование альбомной (landscape) ориентации. Это означает, что вам не нужно менять настройки ориентации экрана в проекте.

  • Установите базовую ширину окна на 1280, а высоту окна на 720.

  • Если вы ориентируетесь в первую очередь на высокопроизводительные устройства, установите базовую ширину окна на 1920, а высоту — на 1080. Это позволит вам использовать 2D-объекты с более высоким разрешением, что обеспечит более чёткую картинку за счёт увеличения потребления памяти и размера файлов. Многие устройства оснащены дисплеями с ещё более высоким разрешением (1440p), но разница с 1080p едва заметна из-за небольшого размера экранов смартфонов. Также рекомендуется увеличить значение параметра GUI > Theme > Default Theme Scale до значения в диапазоне от 1,5 до 2,0, чтобы элементы интерфейса оставались читабельными.

  • Установите режим растяжения на canvas_items.

  • Установите аспект растяжения на expand. Это обеспечивает поддержку различных соотношений сторон и позволяет эффективнее использовать вытянутые экраны смартфонов (например, с соотношением сторон 18:9 или 19:9).

  • Настройте Control узлов управления для привязки к правильным углам с помощью меню Layout.

Совет

Для лучшей поддержки планшетов и складных телефонов (которые часто оснащены дисплеями с соотношением сторон, близким к 4:3), рассмотрите возможность использования базового разрешения с соотношением сторон 4:3, следуя остальным инструкциям. Например, можно установить базовую ширину окна 1280, а базовую высоту — 960.

Мобильная игра в портретном (portrait) режиме

  • Установите базовую ширину окна на 720, а высоту окна на 1280.

  • Если вы ориентируетесь в первую очередь на высокопроизводительные устройства, установите базовую ширину окна на 1080, а высоту — на 1920. Это позволит вам использовать 2D-объекты с более высоким разрешением, что обеспечит более чёткую картинку за счёт увеличения потребления памяти и размера файлов. Многие устройства оснащены дисплеями с ещё более высоким разрешением (1440p), но разница с 1080p едва заметна из-за небольшого размера экранов смартфонов. Также рекомендуется увеличить значение параметра GUI > Theme > Default Theme Scale до значения в диапазоне от 1,5 до 2,0, чтобы элементы интерфейса оставались читабельными.

  • Установите Display > Window > Handheld > Orientation на portrait.

  • Установите режим растяжения на canvas_items.

  • Установите аспект растяжения на expand. Это обеспечивает поддержку различных соотношений сторон и позволяет эффективнее использовать вытянутые экраны смартфонов (например, с соотношением сторон 18:9 или 19:9).

  • Настройте Control узлов управления для привязки к правильным углам с помощью меню Layout.

Совет

Для лучшей поддержки планшетов и складных телефонов (которые часто оснащены дисплеями с соотношением сторон, близким к 4:3), рассмотрите возможность использования базового разрешения с соотношением сторон 3:4, следуя остальным инструкциям. Например, можно установить ширину базового окна 960, а высоту — 1280.

Неигровое приложение

  • Установите базовую ширину и высоту окна равными наименьшему предполагаемому размеру окна. Это не обязательно, но гарантирует, что вы спроектируете свой пользовательский интерфейс с учётом небольших размеров окон.

  • Оставьте режим растяжения на значении по умолчанию: disabled.

  • Keep the stretch aspect to its default value, keep (its value won't be used since the stretch mode is disabled).

  • You can define a minimum window size by setting get_window().min_size in a script's _ready() function. This prevents the user from resizing the application below a certain size, which could break the UI layout.

  • Добавьте в настройки приложения параметр для изменения масштаба растяжения корневой области просмотра stretch scale, чтобы можно было увеличить размер пользовательского интерфейса для дисплеев с высоким разрешением (hiDPI). См. также раздел о поддержке hiDPI ниже.

Поддержка дисплеев высокой плотности(DPI)

По умолчанию операционная система считает проекты Godot поддерживающими DPI. Это регулируется параметром проекта Display > Window > DPI > Allow hiDPI, который следует по возможности оставлять включённым. Отключение поддержки DPI может нарушить работу полноэкранного режима в Windows.

Поскольку проекты Godot поддерживают DPI, при запуске на hiDPI-дисплеях они могут отображаться в очень маленьком окне (пропорционально разрешению экрана). Для игр наиболее распространённый способ обойти эту проблему — сделать их полноэкранными по умолчанию. В качестве альтернативы можно задать размер окна в функции _ready() класса autoload в соответствии с размером экрана.

Чтобы 2D-элементы не выглядели слишком маленькими на дисплеях hiDPI:

  • Для игр используйте режимы растяжения canvas_items или viewport, чтобы 2D-элементы автоматически изменяли размер в соответствии с текущим размером окна.

  • Для неигровых приложений используйте режим растяжения disabled и задайте масштаб растяжения равным значению, соответствующему масштабному коэффициенту отображения, в функции _ready() класса autoload. Масштабный коэффициент отображения задаётся в настройках операционной системы и может быть получен с помощью метода screen_get_scale. Этот метод в настоящее время реализован в Android, iOS, Linux (только Wayland), macOS и Web. На других платформах вам потребуется реализовать метод для определения масштабного коэффициента отображения на основе разрешения экрана (с настройкой, позволяющей пользователю при необходимости переопределить этот коэффициент). Именно такой подход в настоящее время используется в редакторе Godot.

Параметр Allow hiDPI действует только в Windows и macOS. На всех остальных платформах он игнорируется.

Примечание

Сам редактор Godot всегда отмечен как поддерживающий DPI. Запуск проекта из редактора будет поддерживать DPI только в том случае, если в "настройках проекта" включен параметр Allow hiDPI.

Уменьшение алиасинга при понижении частоты дискретизации (downsampling)

Если в игре очень высокое базовое разрешение (например, 3840×2160), то при понижении разрешения до чего-то значительно более низкого, например, 1280×720, может проявиться алиасинг.

Чтобы решить эту проблему, можно enable mipmaps для всех 2D-текстур. Однако включение MIP-текстур увеличит потребление памяти, что может стать проблемой на недорогих мобильных устройствах.

Обработка пропорций

После того, как масштабирование для разных разрешений учтено, убедитесь, что ваш пользовательский интерфейс также масштабируется для разных соотношений сторон. Это можно сделать с помощью anchors и/или containers.

Масштабирование поля зрения

Свойство Keep Aspect узла 3D-камеры по умолчанию настроено на режим масштабирования Keep Height (также называемый Hor+). Обычно это оптимальное значение для игр на настольных компьютерах и мобильных устройствах в альбомной ориентации, поскольку широкоэкранные дисплеи автоматически используют более широкое поле зрения.

Однако, если ваша 3D-игра предназначена для портретного режима, может быть разумнее использовать параметр Keep Width (также называемый Vert-). Таким образом, смартфоны с соотношением сторон выше 16:9 (например, 19:9) будут использовать более высокое поле зрения, что в данном случае более логично.

Различное масштабирование 2D- и 3D-элементов

Для рендеринга 3D-объектов с разрешением, отличным от разрешения 2D-элементов (например, пользовательского интерфейса), используйте функцию Godot resolution scaling. Это позволяет управлять коэффициентом масштабирования разрешения, используемым для 3D-объектов, без необходимости использования отдельного узла Viewport. Это можно использовать для повышения производительности, рендеря 3D-объектов с более низким разрешением, или для улучшения качества с помощью supersampling.