Абстрактный класс материалов.
Материалы описывают внешний вид объектов. В большинстве случаев они определяются независимым от рендерера способом, поэтому вам не придется переписывать материалы, если вы решите использовать другой рендерер.
Следующие свойства и методы наследуются всеми другими типами материалов (хотя они могут иметь другие значения по умолчанию).
Создает абстрактный материал (вызывать не имеет смысла).
Устанавливает значение альфы, которая будет использоваться при выполнении альфа-теста. Материал не будет отрисован, если непрозрачность меньше этого значения. По умолчанию 0.
Включает функцию alpha to coverage. Может использоваться только в том случае, когда MSAA включён для текущего контекста рендеринга (рендерер должен быть создан с параметром antialias равным true). По умолчанию false.
Назначение смешивания. По умолчанию OneMinusSrcAlphaFactor. Все возможные значения данного свойства смотрите здесь.
Чтобы этот параметр имел эффект, свойство .blending должно быть установлено в CustomBlending.
Прозрачность .blendDst. Используется значение .blendDst, если оно равно null. По умолчанию null.
Уравнивание используемое для смешивания. По умолчанию используется AddEquation. Все возможные значения этого свойства смотрите здесь.
Чтобы этот параметр имел эффект, свойство .blending должно быть установлено в CustomBlending.
Прозрачность .blendEquation. Используется значение .blendEquation, если оно равно null. По умолчанию null.
Какое смешивание использовать при отображении объектов с данным материалом.
Это значение должно быть установлено в CustomBlending для использования пользовательских .blendSrc, .blendDst или .blendEquation.
Все возможные значения см. в разделе режимы смешивания. По умолчанию используется NormalBlending.
Источник смешивания. По умолчанию SrcAlphaFactor. Все возможные значения данного свойства смотрите здесь
Чтобы этот параметр имел эффект, свойство .blending должно быть установлено в CustomBlending.
Прозрачность .blendSrc. Используется значение .blendSrc, если оно равно null. По умолчанию null.
Изменяет поведение секущих плоскостей так, что обрезается только их пересечение, а не их объединение. По умолчанию false.
Определяемые пользователем секущие плоскости, заданные как объекты Plane в мировом пространстве. Эти плоскости применяются к объектам, к которым прикреплен данный материал. Точки в пространстве, чье расстояние до плоскости отрицательно, обрезаются (не отображаются). Для работы этой функции свойство WebGLRenderer.localClippingEnabled должно быть установлено в true. По умолчанию null.
Определяет, следует ли обрезать тени в соответствии с секущими плоскостями, указанными для этого материала. По умолчанию false.
Нужно ли отображать цвет материала. Это свойство можно использовать вместе со свойством renderOrder меша для создания невидимых объектов, которые закрывают другие объекты. По умолчанию true.
Пользовательские определения для вставки в шейдер. Они передаются в виде объекта с парами ключ/значение. { MY_CUSTOM_DEFINE: '' , PI2: Math.PI * 2 }. Эти пары определяются как в вершинных, так и во фрагментных шейдерах. По умолчанию — undefined.
Какую функцию глубины использовать. По умолчанию LessEqualDepth. Все возможные значения см. здесь.
Если true, использовать специальный режим прозрачности "Depth Prepass", который рендерит только один (ближайший к наблюдателю) слой прозрачности.
Включать ли проверку глубины при рендеринге этого материала. По умолчанию true.
Влияет ли рендеринг этого материала на буфер глубины. По умолчанию true.
При отрисовке 2Д-наложений может быть полезно отключить запись глубины, чтобы сложить несколько объектов вместе, не создавая артефактов Z-буфера.
Применять ли к цвету дизеринг для устранения полос. По умолчанию false.
Если true, то envMap и связанные с ним свойства параллакса таких материалов, как MeshStandardMaterial и MeshNodeMaterial автоматически назначаются/вычисляются в соответствии с тем, какой CubeReflectionProbe влияет на объект, на котором используется этот материал. По умолчанию Material.DefaultEnvMapAutoAssign (true).
Уникальный номер для данного экземпляра материала.
Является ли объект экземпляром класса Material. Только для чтения.
Необязательное имя объекта (не обязательно уникальное). По умолчанию используется пустая строка.
Указывает, что материал должен быть перекомпилирован.
Величина в диапазоне 0.0 - 1.0, указывающая, насколько прозрачен материал. Значение 0.0 означает полностью прозрачный, 1.0 - полностью непрозрачный.
Если свойство transparent материала не установлено в true, материал будет оставаться полностью непрозрачным, и это значение будет влиять только на его цвет. По умолчанию 1.0.
Использовать ли смещение полигонов. По умолчанию false. Это соответствует функции GL_POLYGON_OFFSET_FILL WebGL.
Устанавливает коэффициент смещения полигонов. По умолчанию 0.
Устанавливает единицы измерения смещения полигонов. По умолчанию 0.
Переопределяет точность рендеринга по умолчанию для этого материала. Может быть "highp", "mediump" или "lowp". По умолчанию null.
Нужно ли предварительно умножать значение альфа-канала (прозрачности). По умолчанию false.
Определяет, с какой стороны грани отбрасывают тени. Может быть v3d.FrontSide, v3d.BackSide, v3d.DoubleSide или null. По умолчанию используется v3d.FrontSide.
Если null, то сторона, отбрасывающая тени, определяется следующим образом:
| Material.side | Сторона, отбрасывающая тень |
|---|---|
| v3d.FrontSide | задняя сторона |
| v3d.BackSide | передняя сторона |
| v3d.DoubleSide | обе стороны |
Определяет, какая сторона граней будет отрисовываться: передняя, задняя или обе. По умолчанию v3d.FrontSide. Другие варианты: v3d.BackSide, v3d.DoubleSide и v3d.TwoPassDoubleSide.
Выполняются ли операции с буфером шаблона. Для выполнения записи или сравнения с буфером шаблона это значение должно быть true. По умолчанию false.
Битовая маска, используемая при записи в буфер шаблона. По умолчанию 0xFF.
Используемая функция сравнения шаблонов. По умолчанию AlwaysStencilFunc. Все возможные значения свойства смотрите здесь.
Значение, используемое при выполнении сравнений шаблонов или операций с шаблонами. По умолчанию 0.
Битовая маска, используемая при сравнении с буфером шаблона. По умолчанию 0xFF.
Какую операцию выполнять с шаблоном, если функция сравнения возвращает false. По умолчанию - KeepStencilOp. Все возможные значения см. в разделе операции с шаблонами.
Какую операцию выполнять с шаблоном, если функция сравнения возвращает true, но тест глубины не прошел. По умолчанию KeepStencilOp. Все возможные значения см. в разделе операции с шаблонами.
Какую операцию выполнять с шаблоном, если функция сравнения возвращает true и тест глубины пройден. По умолчанию KeepStencilOp. Все возможные значения см. в разделе операции с шаблонами.
Определяет, накладывается ли на этот материал тоновое отображение в соответствии с настройкой toneMapping рендерера. По умолчанию true.
Определяет, является ли этот материал прозрачным. Это влияет на рендеринг поскольку прозрачные объекты требуют особого обращения и отображаются после непрозрачных объектов.
Если установлено значение true, то степень прозрачности материала контролируется установкой его свойства opacity. По умолчанию false.
Значение — строка "Material". Это значение не должно быть изменено и может быть использовано для того, чтобы найти все объекты данного типа в сцене.
UUID данного экземпляра материала. Он присваивается автоматически, поэтому его не нужно редактировать.
Он начинается с 0 и считает, сколько раз # .needsUpdate : Booleanустановлено в true.
Определяет, будет ли использоваться раскраска вершин. По умолчанию false.
Это свойство не оказывает влияния на нодовые материалы.
Определяет, является ли данный материал видимым. По умолчанию true.
Объект, который можно использовать для хранения пользовательских данных о материале. Он не должен содержать ссылки на функции, так как они не будут клонироваться.
Настройка по умолчанию для .envMapAutoAssign для вновь созданных материалов. Значение по умолчанию — true.
EventDispatcher методы доступны для этого класса.
Возвращает новый материал с теми же параметрами, что и данный материал.
Копирует параметры из указанного материала в текущий.
В случае использования onBeforeCompile этот коллбэк может использоваться для определения значений параметров, используемых в onBeforeCompile, чтобы Verge3D мог повторно использовать кэшированный шейдер или перекомпилировать шейдер для данного материала по мере необходимости.
Например, если onBeforeCompile содержит условное утверждение типа:
if (black) {
shader.fragmentShader = shader.fragmentShader.replace('gl_FragColor = vec4(1)', 'gl_FragColor = vec4(0)')
}
то customProgramCacheKey должен быть установлен следующим образом:
material.customProgramCacheKey = function() {
return black ? '1' : '0';
}
В отличие от свойств, коллбэк не поддерживается в методах .clone() и .copy().
Освобождает связанные с GPU ресурсы данного материала. Текстуры материала не утилизируются. Их необходимо утилизировать с помощью метода Texture.dispose().
Необязательный коллбэк, который выполняется непосредственно перед компиляцией программы шейдера. Эта функция вызывается с исходным кодом шейдера в качестве параметра. Полезно для модификации встроенных материалов.
В отличие от свойств, коллбэк не поддерживается в методах .clone() и .copy().
values — контейнер с параметрами.
Устанавливает свойства на основе values.
О том как получить исходный код этого модуля читайте тут.