Абстрактный базовый класс для материалов.
Материалы описывают внешний вид objects.
Они определяются (в основном) независимым от рендерера способом, поэтому вам не придется
переписывать материалы, если вы решите использовать другой рендерер.
Следующие свойства и методы наследуются всеми другими типами материалов
(хотя они могут иметь другие значения по умолчанию).
Это создает общий материал.
Устанавливает значение альфа, которое будет использоваться при выполнении альфа-теста. Материал не будет отрисован, если непрозрачность меньше этого значения. По умолчанию 0.
Назначение смешивания. По умолчанию OneMinusSrcAlphaFactor.
Все возможные значения см. в коэффициентах назначения [страница:Константы CustomBlendingEquation].
Чтобы это имело какой-либо эффект, для материала blending должно быть установлено значение CustomBlending.
Прозрачность .blendDst. Использует значение .blendDst, если оно равно null. По умолчанию null.
Уравнивание смешивания, используемое при наложении смешивания. По умолчанию это AddEquation.
Все возможные значения см. в уравнении смешивания constants.
Чтобы этот параметр имел эффект, для материала blending должно быть установлено значение CustomBlending.
Прозрачность .blendEquation. Использует значение .blendEquation, если оно равно null. По умолчанию null.
Какое смешивание использовать при отображении объектов с этим материалом.
Это значение должно быть установлено в CustomBlending для использования пользовательских blendSrc, blendDst или blendEquation.
Все возможные значения см. в разделе Режим смешивания constants. По умолчанию используется NormalBlending.
Источник смешивания. По умолчанию SrcAlphaFactor.
Смотрите коэффициенты источника constants для всех возможных значений.
Чтобы этот параметр имел эффект, для материала blending должно быть установлено значение CustomBlending.
Прозрачность .blendSrc. Использует значение .blendSrc, если оно равно null. По умолчанию null.
Изменяет поведение секущих плоскостей так, что обрезается только их пересечение, а не их объединение. По умолчанию false.
Определяемые пользователем секущие плоскости, заданные как объекты v3d.Plane в мировом пространстве. Эти плоскости применяются к объектам, к которым прикреплен данный материал. Точки в пространстве, чье знаковое расстояние до плоскости отрицательно, обрезаются (не отображаются). Необходимо, чтобы WebGLRenderer.localClippingEnabled было true. По умолчанию null.
Определяет, следует ли обрезать тени в соответствии с плоскостями обрезки, указанными для этого материала. По умолчанию false.
Нужно ли отображать цвет материала. Это свойство можно использовать вместе со свойством renderOrder меша для создания невидимых объектов, которые закрывают другие объекты. По умолчанию true.
Пользовательские определения для вставки в шейдер. Они передаются в виде объектного литерала с парами ключ/значение. { MY_CUSTOM_DEFINE: '' , PI2: Math.PI * 2 }. Эти пары определяются как в вершинных, так и во фрагментных шейдерах. По умолчанию - undefined.
Какую функцию глубины использовать. По умолчанию LessEqualDepth. Все возможные значения см. в режиме глубины [страница:Константы материалов].
Включать ли проверку глубины при рендеринге этого материала. По умолчанию true.
Влияет ли рендеринг этого материала на буфер глубины. По умолчанию true.
При отрисовке 2D-наложений может быть полезно отключить запись глубины, чтобы сложить несколько объектов вместе, не создавая артефактов z-индекса.
Выполняются ли стенсильные операции со стенсильным буфером. Для выполнения записи или сравнения с буфером стенсила это значение должно быть true. По умолчанию false.
Bit mask, используемая при записи в буфер стенсила. По умолчанию 0xFF.
Используемая функция сравнения стенсилов. По умолчанию [страница:Материалы AlwaysStencilFunc]. Все возможные значения см. в функции стенсила constants.
Значение, используемое при выполнении сравнений стенсилов или операций со стенсилами. По умолчанию 0.
Bit mask, используемая при сравнении с буфером стенсила. По умолчанию 0xFF.
Какую операцию выполнять со стенсилом, если функция сравнения возвращает false. По умолчанию - KeepStencilOp. Все возможные значения см. в разделе стенсильные операции constants.
Какую операцию выполнять со стенсилом, если функция сравнения возвращает true, но тест глубины не прошел. По умолчанию KeepStencilOp. Все возможные значения см. в разделе Стенсильные операции constants.
Какую операцию выполнять со стенсилом, если функция сравнения возвращает true и тест глубины пройден. По умолчанию KeepStencilOp. Все возможные значения см. в разделе Стенсильные операции constants.
Если true, то envMap и связанные с ним parallax свойства таких материалов, как MeshStandardMaterial, MeshPhysicalMaterial и MeshNodeMaterial автоматически назначаются/вычисляются в соответствии с тем, какой CubeReflectionProbe влияет на объект, на котором используется этот материал. По умолчанию Material.DefaultEnvMapAutoAssign (true).
Определяет, будет ли материал отрисовываться с плоским затенением. По умолчанию - false.
Влияет ли на материал туман. По умолчанию true.
Уникальный номер для данного экземпляра материала.
Необязательное имя объекта (не обязательно уникальное). По умолчанию это пустая строка.
Указывает, что материал должен быть перекомпилирован.
Плавающая величина в диапазоне 0.0 - 1.0, указывающая, насколько прозрачен материал.
Значение 0.0 означает полностью прозрачный, 1.0 - полностью непрозрачный.
Если свойство transparent материала не установлено в true, материал будет оставаться
полностью непрозрачным, и это значение будет влиять только на его цвет.
По умолчанию 1.0.
Использовать ли смещение полигонов. По умолчанию false. Это соответствует функции GL_POLYGON_OFFSET_FILL WebGL.
Устанавливает коэффициент смещения полигонов. По умолчанию 0.
Устанавливает единицы измерения смещения полигонов. По умолчанию 0.
Переопределяет точность рендеринга по умолчанию для этого материала. Может быть "highp", "mediump" или "lowp". По умолчанию null.
Нужно ли предварительно умножать значение альфа-канала (прозрачности). Пример разницы смотрите в WebGL / Materials / Physical / Transmission. По умолчанию false.
Применять ли к цвету дизеринг для устранения полос. По умолчанию false.
Определяет, с какой стороны грани отбрасывают тени.
При установке может быть v3d.FrontSide, v3d.BackSide или v3d.DoubleSide. По умолчанию это null.
Если null, то сторона, отбрасывающая тени, определяется следующим образом:
Material.side | сторона, отбрасывающая тень |
---|---|
v3d.FrontSide | задняя сторона |
v3d.BackSide | передняя сторона |
v3d.DoubleSide | обе стороны |
Определяет, какая сторона граней будет отрисовываться - передняя, задняя или обе. По умолчанию v3d.FrontSide. Другие варианты - v3d.BackSide и v3d.DoubleSide.
Определяет, накладывается ли на этот материал тоновое отображение в соответствии с настройкой toneMapping рендерера. По умолчанию true.
Определяет, является ли этот материал прозрачным. Это влияет на рендеринг
поскольку прозрачные объекты требуют особого обращения и отображаются после
непрозрачных объектов.
Если установлено значение true, то степень прозрачности материала
контролируется установкой его свойства opacity.
По умолчанию false.
Значение - это строка 'Material'. Это значение не должно быть изменено и может быть использовано для того, чтобы найти все объекты данного типа в сцене.
UUID данного экземпляра материала. Он присваивается автоматически, поэтому его не нужно редактировать.
Он начинается с 0 и считает, сколько раз # .needsUpdate : Booleanустановлено в true.
Определяет, будет ли использоваться раскраска вершин. По умолчанию false.
Определяет, является ли данный материал видимым. По умолчанию true.
Объект, который можно использовать для хранения пользовательских данных о материале. Он не должен содержать ссылки на функции, так как они не будут клонироваться.
Настройка по умолчанию для .envMapAutoAssign для вновь созданных материалов.
Значение по умолчанию - true.
Возвращает новый материал с теми же параметрами, что и данный материал.
Копирует параметры из переданного материала в этот материал.
При этом материал утилизируется. Текстуры материала не утилизируются. Их нужно утилизировать с помощью Texture.
Необязательный коллбэк, который выполняется непосредственно перед компиляцией программы шейдера. Эта функция вызывается с исходным кодом шейдера в качестве параметра. Полезно для модификации встроенных материалов.
В отличие от свойств, коллбэк не копируется в методах .clone() и .copy().
В случае использования 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().
values — контейнер с параметрами.
Устанавливает свойства на основе values (значений).
О том как получить исходный код этого модуля читайте тут.