Material

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

Материалы описывают внешний вид objects. Они определяются (в основном) независимым от рендерера способом, поэтому вам не придется переписывать материалы, если вы решите использовать другой рендерер.

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

Конструктор

Material()

Это создает общий материал.

Свойства

.alphaTest : Float

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

.blendDst : Integer

Назначение смешивания. По умолчанию OneMinusSrcAlphaFactor. Все возможные значения см. в коэффициентах назначения [страница:Константы CustomBlendingEquation].
Чтобы это имело какой-либо эффект, для материала blending должно быть установлено значение CustomBlending.

.blendDstAlpha : Integer

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

.blendEquation : Integer

Уравнивание смешивания, используемое при наложении смешивания. По умолчанию это AddEquation. Все возможные значения см. в уравнении смешивания constants.
Чтобы этот параметр имел эффект, для материала blending должно быть установлено значение CustomBlending.

.blendEquationAlpha : Integer

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

.blending : Blending

Какое смешивание использовать при отображении объектов с этим материалом.
Это значение должно быть установлено в CustomBlending для использования пользовательских blendSrc, blendDst или blendEquation.
Все возможные значения см. в разделе Режим смешивания constants. По умолчанию используется NormalBlending.

.blendSrc : Integer

Источник смешивания. По умолчанию SrcAlphaFactor. Смотрите коэффициенты источника constants для всех возможных значений.
Чтобы этот параметр имел эффект, для материала blending должно быть установлено значение CustomBlending.

.blendSrcAlpha : Integer

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

.clipIntersection : Boolean

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

.clippingPlanes : Array

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

.clipShadows : Boolean

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

.colorWrite : Boolean

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

.defines : Object

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

.depthFunc : Integer

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

.depthTest : Boolean

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

.depthWrite : Boolean

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

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

.stencilWrite : Boolean

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

.stencilWriteMask : Integer

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

.stencilFunc : Integer

Используемая функция сравнения стенсилов. По умолчанию [страница:Материалы AlwaysStencilFunc]. Все возможные значения см. в функции стенсила constants.

.stencilRef : Integer

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

.stencilFuncMask : Integer

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

.stencilFail : Integer

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

.stencilZFail : Integer

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

.stencilZPass : Integer

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

.envMapAutoAssign : Boolean

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

.flatShading : Boolean

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

.fog : Boolean

Влияет ли на материал туман. По умолчанию true.

.id : Integer

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

.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

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

.dithering : Boolean

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

.shadowSide : Integer

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

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

.side : Integer

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

.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

Копирует параметры из переданного материала в этот материал.

.dispose() → null

При этом материал утилизируется. Текстуры материала не утилизируются. Их нужно утилизировать с помощью Texture.

.onBeforeCompile(shader : Shader, renderer : WebGLRenderer) → null

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

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

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

.setValues(values : Object) → null

values — контейнер с параметрами.
Устанавливает свойства на основе values (значений).

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

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