Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Standard Material 3D and ORM Material 3D

Введение

StandardMaterial3D and ORMMaterial3D (Occlusion, Roughness, Metallic) are default 3D materials that aim to provide most of the features artists look for in a material, without the need for writing shader code. However, they can be converted to shader code if additional functionality is needed.

This tutorial explains the parameters present in both materials.

There are 4 ways to add these materials to an object. A material can be added in the Material property of the mesh. It can be added in the Material property of the node using the mesh (such as a MeshInstance3D node), the Material Override property of the node using the mesh, and the Material Overlay.

../../_images/add_material.webp

Если вы добавите материал к самой сетке, каждый раз, когда эта сетка будет использоваться, она будет иметь этот материал. Если вы добавите материал к узлу, использующему сетку, материал будет использоваться только этим узлом, он также переопределит свойство материала сетки. Если материал добавлен в свойство Material Override узла, он будет использоваться только этим узлом. Он также будет переопределять обычное свойство материала узла и свойство материала сетки.

Свойство Material Overlay (Наложение материала) будет отображать материал поверх текущего материала, используемого сеткой. Например, это можно использовать для наложения эффекта прозрачного щита на сетку.

BaseMaterial 3D settings

StandardMaterial3D has many settings that determine the look of a material. All of these are under the BaseMaterial3D category

../../_images/spatial_material1.png

ORM materials are almost exactly the same with one difference. Instead of separate settings and textures for occlusion, roughness, and metallic, there is a single ORM texture. The different color channels of that texture are used for each parameter. Programs such as Substance Painter and Armor Paint will give you the option to export in this format, for these two programs it's with the export preset for unreal engine, which also uses ORM textures.

Transparency

By default, materials in Godot are opaque. This is fast to render, but it means the material can't be seen through even if you use a transparent texture in the Albedo > Texture property (or set Albedo > Color to a transparent color).

To be able to see through a material, the material needs to be made transparent. Godot offers several transparency modes:

  • Disabled: Material is opaque. This is the fastest to render, with all rendering features supported.

  • Alpha: Material is transparent. Semi-transparent areas are drawn with blending. This is slow to render, but it allows for partial transparency (also known as translucency). Materials using alpha blending also can't cast shadows, and are not visible in screen-space reflections.

    • Alpha is a good fit for particle effects and VFX.

  • Alpha Scissor: Material is transparent. Semi-transparent areas whose opacity is below Alpha Scissor Threshold are not drawn (above this opacity, these are drawn as opaque). This is faster to render than Alpha and doesn't exhibit transparency sorting issues. The downside is that this results in "all or nothing" transparency, with no intermediate values possible. Materials using alpha scissor can cast shadows.

    • Alpha Scissor is ideal for foliage and fences, since these have hard edges and require correct sorting to look good.

  • Alpha Hash: Material is transparent. Semi-transparent areas are drawn using dithering. This is also "all or nothing" transparency, but dithering helps represent partially opaque areas with limited precision depending on viewport resolution. Materials using alpha hash can cast shadows.

    • Alpha Hash is suited for realistic-looking hair, although stylized hair may work better with alpha scissor.

  • Depth Pre-Pass: This renders the object's fully opaque pixels via the opaque pipeline first, then renders the rest with alpha blending. This allows transparency sorting to be mostly correct (albeit not fully so, as partially transparent regions may still exhibit incorrect sorting). Materials using depth prepass can cast shadows.

Примечание

Godot will automatically force the material to be transparent with alpha blending if any of these conditions is met:

  • Setting the transparency mode to Alpha (as described here).

  • Setting a blend mode other than the default Mix

  • Enabling Refraction, Proximity Fade, or Distance Fade.

Comparison between alpha blending (left) and alpha scissor (right) transparency:

../../_images/spatial_material12.png

Предупреждение

Alpha-blended transparency has several limitations:

  • Alpha-blended materials are significantly slower to render, especially if they overlap.

  • Alpha-blended materials may exhibit sorting issues when transparent surfaces overlap each other. This means that surfaces may render in the incorrect order, with surfaces in the back appearing to be in front of those which are actually closer to the camera.

  • Alpha-blended materials don't cast shadows, although they can receive shadows.

  • Alpha-blended materials don't appear in any reflections (other than reflection probes).

  • Screen-space reflections and sharp SDFGI reflections don't appear on alpha-blended materials. When SDFGI is enabled, rough reflections are used as a fallback regardless of material roughness.

Before using the Alpha transparency mode, always consider whether another transparency mode is more suited for your needs.

Alpha Antialiasing

Примечание

This property is only visible when the transparency mode is Alpha Scissor or Alpha Hash.

While alpha scissor and alpha hash materials are faster to render than alpha-blended materials, they exhibit hard edges between opaque and transparent regions. While it's possible to use post-processing-based antialiasing techniques such as FXAA and TAA, this is not always desired as these techniques tend to make the final result look blurrier or exhibit ghosting artifacts.

There are 3 alpha antialiasing modes available:

  • Disabled: No alpha antialiasing. Edges of transparent materials will appear aliased unless a post-processing-based antialiasing solution is used.

  • Alpha Edge Blend: Results in a smooth transition between opaque and transparent areas. Also known as "alpha to coverage".

  • Alpha Edge Clip: Results in a sharp, but still antialiased transition between opaque and transparent areas. Also known as "alpha to coverage + alpha to one".

When the alpha antialiasing mode is set to Alpha Edge Blend or Alpha Edge Clip, a new Alpha Antialiasing Edge property becomes visible below in the inspector. This property controls the threshold below which pixels should be made transparent. While you've already defined an alpha scissor threshold (when using Alpha Scissor only), this additional threshold is used to smoothly transition between opaque and transparent pixels. Alpha Antialiasing Edge must always be set to a value that is strictly below the alpha scissor threshold. The default of 0.3 is a sensible value with an alpha scissor of threshold of 0.5, but remember to adjust this alpha antialiasing edge when modifying the alpha scissor threshold.

If you find the antialiasing effect not effective enough, try increasing Alpha Antialiasing Edge while making sure it's below Alpha Scissor Threshold (if the material uses alpha scissor). On the other hand, if you notice the texture's appearance visibly changing as the camera moves closer to the material, try decreasing Alpha Antialiasing Edge.

Важно

For best results, MSAA 3D should be set to at least 2× in the Project Settings when using alpha antialiasing. This is because this feature relies on alpha to coverage, which is a feature provided by MSAA.

Without MSAA, a fixed dithering pattern is applied on the material's edges, which isn't very effective at smoothing out edges (although it can still help a little).

Режим смешивания

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

  • Mix: Режим наложения по умолчанию, альфа управляет тем, насколько объект виден.

  • Add: The final color of the object is added to the color of the screen, nice for flares or some fire-like effects.

  • Sub: The final color of the object is subtracted from the color of the screen.

  • Mul: The final color of the object is multiplied with the color of the screen.

../../_images/spatial_material8.png

Режим отбраковки

Определяет, какая сторона объекта не рисуется при отрисовке задних граней:

  • Back: Задняя часть объекта обрезается, если она не видна (по умолчанию).

  • Front: Передняя часть объекта отсеивается, если она не видна.

  • Disabled: Используется для объектов, которые являются двусторонними (не производится выбраковка).

Примечание

По умолчанию, в Blender отключено отсечение невидимых полигонов у материалов и Blender будет экспортировать материалы так чтобы соответствовать тому как они отрисовываются в Blender. Это значит что у материалов в Godot отсечение материалов установлено на Отключить. Это может уменьшить производительность при отрисовке невидимых граней, даже когда они были отсечены другими гранями. Что бы решить это, включите Отсечение невидимых граней во вкладке "Материалы" в Blender, после этого экспортируйте в 3d-сцену в формате glTF снова.

Режим прорисовки глубины

Указывает, когда должен происходить рендеринг глубины.

  • Opaque Only (default): Глубина рисуется только для непрозрачных объектов.

  • Всегда: Отрисовка глубины рисуется как для непрозрачных, так и для прозрачных объектов.

  • Never: No depth draw takes place (do not confuse this with the No Depth Test option below).

  • Предварительный проход глубины: Для прозрачных объектов сначала выполняется непрозрачный проход с непрозрачными частями, затем прозрачность прорисовывается выше. Используйте этот вариант с прозрачной травой или листвой деревьев.

../../_images/material_depth_draw.png

Без теста глубины

Для того чтобы показывать близкие объекты над дальними объектами, проводится тест глубины. Его выключение ведёт к тому что объекты будут показывать над (или под) всеми остальными.

Его отключение имеет смысл для отрисовки индикаторов в мировом пространстве, и отлично работает в связке со свойством Render Priority на Материале (смотрите внизу данной страницы).

../../_images/spatial_material3.png

Шейдинг (Затенение)

Shading mode

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

Так как эти вычисления дорогостоящие, производительность может значительно понизиться в некоторых особых случаях таких как отрисовка множества слоёв прозрачности (что обычно происходит в системах частиц). Переключение на режим света для-каждой-вершины может помочь в этих случаях.

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

../../_images/spatial_material2.png

Имейте ввиду что когда вершинное освещение включено, только направленный свет может создавать тени (по причинам производительности).

However, in some cases you might want to show just the albedo (color) and ignore the rest. To do this you can set the shading mode to unshaded

../../_images/spatial_material26.png

Режим смешения

Указывает алгоритм, используемый при диффузном рассеянии света при попадании на объект. По умолчанию используется Burley. Также доступны другие режимы:

  • Burley: Режим по умолчанию, оригинальный алгоритм диффузии Disney Principled PBS.

  • Lambert: Не подвержен влиянию шероховатости.

  • Lambert Wrap: Расширяет Lambert для охвата более 90 градусов при увеличении шероховатости. Отлично подходит для волос и моделирования дешевого подповерхностного рассеяния. Эта реализация экономит энергию.

  • Oren Nayar: Эта реализация направлена на учет микрошлифов (через шероховатость). Хорошо работает для глиноподобных материалов и некоторых типов ткани.

  • 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.

../../_images/spatial_material6.png

Зеркальный режим

Определяет, как будет отображаться спекулярный шар. Спекулярное пятно представляет собой форму источника света, отраженного от объекта.

  • SchlickGGX: The most common blob used by PBR 3D engines nowadays.

  • Blinn: Распространен в движках предыдущего поколения. Не стоит использовать в настоящее время, но оставлен здесь ради совместимости.

  • Phong: Тоже, что и выше.

  • Toon: Создает toon блоб, размер которого меняется в зависимости от шероховатости.

  • Disabled: Иногда блоб мешает. Прочь!

../../_images/spatial_material7.png

Отключить окружающие освещение

Заставляет объект не принимать окружающий свет который бы иначе осветил его.

Disable Fog

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).

Цвет вершин

This setting allows choosing what is done by default to vertex colors that come from your 3D modeling application. By default, they are ignored.

../../_images/spatial_material4.png

Использовать как Альбедо

Использование этого параметра заставляет цвет вершин использовать цвет альбедо.

Является SRGB

Most 3D modeling software will likely export vertex colors as sRGB, so toggling this option on will help them look correct.

Альбедо

Albedo - это базовый цвет материала, на который опираются все остальные настройки. Когда установлено значение Unshaded, это единственный видимый цвет. В предыдущих версиях Godot этот канал назывался Diffuse. Изменение названия произошло в основном потому, что в PBR (Physically Based Rendering) этот цвет влияет на гораздо большее количество вычислений, чем просто диффузный путь освещения.

Альбедо цвета и текстуры можно использовать вместе, так как они умножаются.

Альфа-канал в цвете альбедо и текстуре также используется для прозрачности объекта. Если вы используете цвет или текстуру с альфа-каналом, убедитесь, что вы включили прозрачность или alpha scissoring*, чтобы они работали.

Металлический

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

Параметр Specular - это общая величина для отражения (в отличие от Metallic, этот параметр не экономит энергию, поэтому оставьте его на 0.5 и не трогайте его, если вам это не нужно).

Минимальная внутренняя отражательная способность составляет 0,04, поэтому невозможно сделать материал полностью неотражающим, как и в реальной жизни.

../../_images/spatial_material13.png

Шероховатость

Roughness влияет на то, как происходит отражение. Значение 0 делает его идеальным зеркалом, а значение 1 полностью размывает отражение (имитируя естественную микрошлифовку). Большинство распространенных типов материалов могут быть получены при правильном сочетании Металлик и Шероховатость.

../../_images/spatial_material14.png

Излучение

Emission specifies how much light is emitted by the material (keep in mind this does not include light surrounding geometry unless VoxelGI or SDFGI are used). This value is added to the resulting final image and is not affected by other lighting in the scene.

../../_images/spatial_material15.png

Карта нормалей

Нормальное отображение (Англа: нормал маппинг) позволяет задать текстуру, которая отображает более мелкие детали формы. Это не изменяет геометрию, только угол падения света. В Godot используются только красный и зеленый каналы карт нормалей для лучшего сжатия и более широкой совместимости.

../../_images/spatial_material16.png

Примечание

Godot требует, чтобы карта нормалей использовала координаты X+, Y+ и Z+, это известно как стиль OpenGL. Если вы импортировали материал, созданный для использования в другом движке, он может быть в стиле DirectX, в этом случае карту нормалей нужно преобразовать так, чтобы ось Y была перевернута.

Более подробную информацию о картах нормалей (включая таблицу порядка координат для популярных движков) можно найти здесь.

Обод

Некоторые ткани имеют небольшой микромех, который заставляет свет рассеиваться вокруг него. Godot эмулирует это с помощью параметра Rim. В отличие от других реализаций освещения обода, которые просто используют канал излучения, этот параметр действительно учитывает свет (нет света - нет обода). Это делает эффект значительно более правдоподобным.

../../_images/spatial_material17.png

Размер обода зависит от шероховатости, и есть специальный параметр, указывающий, как он должен быть окрашен. Если Tint равен 0, то для обода используется цвет света. Если Tint равен 1, то используется альбедо материала. Обычно лучше всего использовать промежуточные значения.

Прозрачное покрытие

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

../../_images/clearcoat_comparison.png

Анизотропия

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

../../_images/spatial_material18.png

Внешнее перекрытие

Можно указать запеченную карту окклюзии окружающего света. Эта карта влияет на то, сколько окружающего света достигает каждой поверхности объекта (по умолчанию она не влияет на прямой свет). Хотя для создания окклюзии можно использовать Screen-Space Ambient Occlusion (SSAO), ничто не сравнится с качеством хорошо пропеченной карты AO. Рекомендуется запекать окружающее затенение всегда, когда это возможно.

../../_images/spatial_material19.png

Height

Установка карты глубины на материале производит поиск по лучам, чтобы имитировать правильное перемещение полостей вдоль направления обзора. Это не настоящая добавленная геометрия, а иллюзия глубины. Это может не работать для сложных объектов, но создает реалистичный эффект глубины для текстур. Для достижения наилучших результатов Глубину следует использовать вместе с обычным отображением.

../../_images/spatial_material20.png

Подповерхностное рассеяние

Этот эффект имитирует свет, который проникает через поверхность объекта, рассеивается, а затем выходит наружу. Это полезно для создания реалистичной кожи, мрамора, цветных жидкостей и т.д.

../../_images/spatial_material21.png

Back Lighting

Это определяет, сколько света с освещенной стороны (видимой для света) передается на темную сторону (противоположную от света). Это хорошо работает для тонких объектов, таких как листья растений, трава, человеческие уши и т. д.

Преломление (рефрацкция)

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.

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.

A normal map can optionally be specified in the Refraction Texture property to allow distorting the refraction's direction on a per-pixel basis.

../../_images/spatial_material23.png

Примечание

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:

  • Transparency sorting issues may occur.

  • The refractive material cannot refract onto itself, or onto other transparent materials. A refractive material behind another transparent material will be invisible.

  • Off-screen objects cannot appear in the refraction. This is most noticeable with high refraction strength values.

  • Opaque materials in front of the refractive material will appear to have "refracted" edges, even though they shouldn't.

Деталь

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

../../_images/spatial_material24.png

Существует несколько настроек, которые управляют тем, как используется детализация.

Маска детализации: это черно-белое изображение, используемое для управления тем, где происходит смешивание текстуры. Белый - для текстур деталей, черный - для обычных текстур материалов, различные оттенки серого - для частичного смешивания текстур материалов и текстур деталей.

Режим наложения: Эти четыре режима управляют тем, как текстуры смешиваются вместе.

  • Смешивание: Объединяет значения пикселей обеих текстур. В черном цвете отображается только текстура материала, в белом - только текстура деталей. Значения серого создают плавное смешение между ними.

  • Добавить: Добавляет пиксельные значения одной текстуры к другой. В отличие от режима смешивания обе текстуры полностью смешиваются на белых участках маски и не смешиваются на серых участках. Оригинальная текстура в основном остается неизменной на черных участках

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

  • Mul: Перемножает номера каналов RGB для каждого пикселя из верхней текстуры со значениями для соответствующего пикселя из нижней текстуры.

Albedo: Поместите сюда текстуру альбедо, которую вы хотите смешать. Если этот слот останется пустым, то цвет будет белым по умолчанию.

Normal: Сюда помещается нормальная текстура, которую вы хотите смешать. Если в этом слоте ничего нет, он будет интерпретироваться как плоская карта нормалей. Это можно использовать, даже если в материале не включена карта нормалей.

UV1 и UV2

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

Трёхплоскостное наложение

Трёхплоскостное наложение выполнимо как для UV1, так и для UV2. Это другой способ определения текстурных координат, известный также как "автотекстурирование". Текстуры выбираются по X, Y и Z и смешиваются по нормали. Трёхплоскостное наложение может быть выполнено как в местных, так и в мировых координатах.

На изображении ниже видно, что все примитивы имеют один и тот же материал с мировым трипланаром, поэтому текстура кирпича плавно переходит между ними.

../../_images/spatial_material25.png

Мировая трипланарность

When using triplanar mapping, it is computed in object local space. This option makes it use world space instead.

Sampling

Фильтр

The filtering method for the textures used by the material. See this page for a full list of options and their description.

Повторить

if the textures used by the material repeat, and how they repeat. See this page for a full list of options and their description.

Тени

Не получать тени

Заставляет объект не принимать тени которые иначе были бы отброшены на него.

Используйте тень для непрозрачности

Освещение изменяет альфа-канал так, что затененные области становятся непрозрачными, а незатененные - прозрачными. Полезно для наложения теней на камеру в AR.

Billboard

Режим рекламного щита

Включает режим рекламного щита для рисования материалов. Это контролирует, как объект смотрит в камеру:

  • Отключено: Режим рекламного щита отключен.

  • Enabled: Billboard mode is enabled. The object's -Z axis will always face the camera's viewing plane.

  • Y-Billboard: The object's X axis will always be aligned with the camera's viewing plane.

  • Particle Billboard: Most suited for particle systems, because it allows specifying flipbook animation.

../../_images/spatial_material9.png

The Particles Anim section is only visible when the billboard mode is Particle Billboard.

Сохранять масштаб рекламного щита

Включает масштабирование сетки в режиме билборда.

Расти

Увеличивает вершины объекта в направлении, указанном их нормалями:

../../_images/spatial_material10.png

Это обычно используется для создания дешевых контуров. Добавьте второй проход по материалу, сделайте его черным и незатененным, сделайте обратную обработку (Cull Front) и добавьте растушевку:

../../_images/spatial_material11.png

Преобразование

Фиксированный размер

Этот флаг заставляет объект рисоваться в одинаковом размере вне зависимости от расстояния. Это полезно для индикаторов (без теста глубины и высокого приоритета отрисовки) и некоторых типов билбордов.

Использовать размер точки

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).

Размер точки

При рисовании точек укажите размер точки в пикселях.

Пропускание света

Это определяет, сколько света с освещенной стороны (видимой для света) передается на темную сторону (противоположную от света). Это хорошо работает для тонких объектов, таких как листья растений, трава, человеческие уши и т. д.

../../_images/spatial_material22.png

Proximity and Distance Fade

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.

../../_images/spatial_material_proxfade.gif

Distance fade is useful for light shafts or indicators that are only present after a given distance.

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. 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).

Material Settings

Приоритет рендеринга

Порядок рендеринга объектов можно изменить, хотя это в основном полезно для прозрачных объектов (или непрозрачных объектов, которые выполняют прорисовку глубины, но не прорисовку цвета, например трещины на полу).

Next Pass

Sets the material to be used for the next pass. This renders the object again with a different material.