Material

Абстрактный класс материалов.

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

Следующие свойства и методы наследуются всеми другими типами материалов (хотя они могут иметь другие значения по умолчанию).

Конструктор

Material()

Создает абстрактный материал (вызывать не имеет смысла).

Свойства

.alphaTest : Float

Устанавливает значение альфы, которая будет использоваться при выполнении альфа-теста. Материал не будет отрисован, если непрозрачность меньше этого значения. По умолчанию 0.

.alphaToCoverage : Boolean

Включает функцию alpha to coverage. Может использоваться только в том случае, когда MSAA включён для текущего контекста рендеринга (рендерер должен быть создан с параметром antialias равным true). По умолчанию false.

.blendDst : Constant

Назначение смешивания. По умолчанию OneMinusSrcAlphaFactor. Все возможные значения данного свойства смотрите здесь.

Чтобы этот параметр имел эффект, свойство .blending должно быть установлено в CustomBlending.

.blendDstAlpha : Constant

Прозрачность .blendDst. Используется значение .blendDst, если оно равно null. По умолчанию null.

.blendEquation : Constant

Уравнивание используемое для смешивания. По умолчанию используется AddEquation. Все возможные значения этого свойства смотрите здесь.

Чтобы этот параметр имел эффект, свойство .blending должно быть установлено в CustomBlending.

.blendEquationAlpha : Constant

Прозрачность .blendEquation. Используется значение .blendEquation, если оно равно null. По умолчанию null.

.blending : Blending

Какое смешивание использовать при отображении объектов с данным материалом.

Это значение должно быть установлено в CustomBlending для использования пользовательских .blendSrc, .blendDst или .blendEquation.

Все возможные значения см. в разделе режимы смешивания. По умолчанию используется NormalBlending.

.blendSrc : Constant

Источник смешивания. По умолчанию SrcAlphaFactor. Все возможные значения данного свойства смотрите здесь

Чтобы этот параметр имел эффект, свойство .blending должно быть установлено в CustomBlending.

.blendSrcAlpha : Constant

Прозрачность .blendSrc. Используется значение .blendSrc, если оно равно null. По умолчанию null.

.clipIntersection : Boolean

Изменяет поведение секущих плоскостей так, что обрезается только их пересечение, а не их объединение. По умолчанию false.

.clippingPlanes : Array

Определяемые пользователем секущие плоскости, заданные как объекты Plane в мировом пространстве. Эти плоскости применяются к объектам, к которым прикреплен данный материал. Точки в пространстве, чье расстояние до плоскости отрицательно, обрезаются (не отображаются). Для работы этой функции свойство WebGLRenderer.localClippingEnabled должно быть установлено в true. По умолчанию null.

.clipShadows : Boolean

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

.colorWrite : Boolean

Нужно ли отображать цвет материала. Это свойство можно использовать вместе со свойством renderOrder меша для создания невидимых объектов, которые закрывают другие объекты. По умолчанию true.

.defines : Object

Пользовательские определения для вставки в шейдер. Они передаются в виде объекта с парами ключ/значение. { MY_CUSTOM_DEFINE: '' , PI2: Math.PI * 2 }. Эти пары определяются как в вершинных, так и во фрагментных шейдерах. По умолчанию — undefined.

.depthFunc : Constant

Какую функцию глубины использовать. По умолчанию LessEqualDepth. Все возможные значения см. здесь.

.depthPrepass : Boolean

Если true, использовать специальный режим прозрачности "Depth Prepass", который рендерит только один (ближайший к наблюдателю) слой прозрачности.

.depthTest : Boolean

Включать ли проверку глубины при рендеринге этого материала. По умолчанию true.

.depthWrite : Boolean

Влияет ли рендеринг этого материала на буфер глубины. По умолчанию true.

При отрисовке 2Д-наложений может быть полезно отключить запись глубины, чтобы сложить несколько объектов вместе, не создавая артефактов Z-буфера.

.dithering : Boolean

Применять ли к цвету дизеринг для устранения полос. По умолчанию false.

.envMapAutoAssign : Boolean

Если true, то envMap и связанные с ним свойства параллакса таких материалов, как MeshStandardMaterial и MeshNodeMaterial автоматически назначаются/вычисляются в соответствии с тем, какой CubeReflectionProbe влияет на объект, на котором используется этот материал. По умолчанию Material.DefaultEnvMapAutoAssign (true).

.id : Integer

Уникальный номер для данного экземпляра материала.

.isMaterial : Boolean

Является ли объект экземпляром класса Material. Только для чтения.

.name : String

Необязательное имя объекта (не обязательно уникальное). По умолчанию используется пустая строка.

.needsUpdate : Boolean

Указывает, что материал должен быть перекомпилирован.

.opacity : Float

Величина в диапазоне 0.0 - 1.0, указывающая, насколько прозрачен материал. Значение 0.0 означает полностью прозрачный, 1.0 - полностью непрозрачный.

Если свойство transparent материала не установлено в true, материал будет оставаться полностью непрозрачным, и это значение будет влиять только на его цвет. По умолчанию 1.0.

.polygonOffset : Boolean

Использовать ли смещение полигонов. По умолчанию false. Это соответствует функции GL_POLYGON_OFFSET_FILL WebGL.

.polygonOffsetFactor : Integer

Устанавливает коэффициент смещения полигонов. По умолчанию 0.

.polygonOffsetUnits : Integer

Устанавливает единицы измерения смещения полигонов. По умолчанию 0.

.precision : String

Переопределяет точность рендеринга по умолчанию для этого материала. Может быть "highp", "mediump" или "lowp". По умолчанию null.

.premultipliedAlpha : Boolean

Нужно ли предварительно умножать значение альфа-канала (прозрачности). По умолчанию false.

.shadowSide : Constant

Определяет, с какой стороны грани отбрасывают тени. Может быть v3d.FrontSide, v3d.BackSide, v3d.DoubleSide или null. По умолчанию используется v3d.FrontSide.

Если null, то сторона, отбрасывающая тени, определяется следующим образом:

Material.side Сторона, отбрасывающая тень
v3d.FrontSide задняя сторона
v3d.BackSide передняя сторона
v3d.DoubleSide обе стороны

.side : Constant

Определяет, какая сторона граней будет отрисовываться: передняя, задняя или обе. По умолчанию v3d.FrontSide. Другие варианты: v3d.BackSide, v3d.DoubleSide и v3d.TwoPassDoubleSide.

.stencilWrite : Boolean

Выполняются ли операции с буфером шаблона. Для выполнения записи или сравнения с буфером шаблона это значение должно быть true. По умолчанию false.

.stencilWriteMask : Integer

Битовая маска, используемая при записи в буфер шаблона. По умолчанию 0xFF.

.stencilFunc : Integer

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

.stencilRef : Integer

Значение, используемое при выполнении сравнений шаблонов или операций с шаблонами. По умолчанию 0.

.stencilFuncMask : Integer

Битовая маска, используемая при сравнении с буфером шаблона. По умолчанию 0xFF.

.stencilFail : Integer

Какую операцию выполнять с шаблоном, если функция сравнения возвращает false. По умолчанию - KeepStencilOp. Все возможные значения см. в разделе операции с шаблонами.

.stencilZFail : Integer

Какую операцию выполнять с шаблоном, если функция сравнения возвращает true, но тест глубины не прошел. По умолчанию KeepStencilOp. Все возможные значения см. в разделе операции с шаблонами.

.stencilZPass : Integer

Какую операцию выполнять с шаблоном, если функция сравнения возвращает true и тест глубины пройден. По умолчанию KeepStencilOp. Все возможные значения см. в разделе операции с шаблонами.

.toneMapped : Boolean

Определяет, накладывается ли на этот материал тоновое отображение в соответствии с настройкой toneMapping рендерера. По умолчанию true.

.transparent : Boolean

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

Если установлено значение true, то степень прозрачности материала контролируется установкой его свойства opacity. По умолчанию false.

.type : String

Значение — строка "Material". Это значение не должно быть изменено и может быть использовано для того, чтобы найти все объекты данного типа в сцене.

.uuid : String

UUID данного экземпляра материала. Он присваивается автоматически, поэтому его не нужно редактировать.

.version : Integer

Он начинается с 0 и считает, сколько раз .needsUpdate : Booleanустановлено в true.

.vertexColors : Boolean

Определяет, будет ли использоваться раскраска вершин. По умолчанию false.

Это свойство не оказывает влияния на нодовые материалы.

.visible : Boolean

Определяет, является ли данный материал видимым. По умолчанию true.

.userData : Object

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

Статические свойства

.DefaultEnvMapAutoAssign : Boolean

Настройка по умолчанию для .envMapAutoAssign для вновь созданных материалов. Значение по умолчанию — true.

Методы

EventDispatcher методы доступны для этого класса.

.clone() → Material

Возвращает новый материал с теми же параметрами, что и данный материал.

.copy(material : Material) → Material

Копирует параметры из указанного материала в текущий.

.customProgramCacheKey() → String

В случае использования 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().

.dispose()

Освобождает связанные с GPU ресурсы данного материала. Текстуры материала не утилизируются. Их необходимо утилизировать с помощью метода Texture.dispose().

.onBeforeCompile(shader : Shader, renderer : WebGLRenderer)

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

В отличие от свойств, коллбэк не поддерживается в методах .clone() и .copy().

.setValues(values : Object)

values — контейнер с параметрами.

Устанавливает свойства на основе values.

Исходный файл

О том как получить исходный код этого модуля читайте тут.