Константы материалов — Софт Эйт Софт
Description: Список констант материалов, использумых в Вердж3Д.

# Константы материалов

Эти константы определяют свойства, общие для всех типов материалов.

- Сторона
- Режимы смешивания
- Режимы глубины
- Функции шаблонов
- Операции с шаблонами
- Версия GLSL
- Пользовательские уравнения смешивания

#

## Сторона

`v3d.FrontSide v3d.BackSide v3d.DoubleSide v3d.TwoPassDoubleSide`

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

Константа TwoPassDoubleSide рендерит двусторонние материалы в двух отдельных стадиях, в порядке задний-передний, что позволяет устранить ряд артефактов прозрачности.

#

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

`v3d.NoBlending v3d.NormalBlending v3d.AdditiveBlending v3d.SubtractiveBlending v3d.MultiplyBlending v3d.CustomBlending`

Они управляют уравнениями смешивания источника и получателя для RGB и Alpha материала, отправляемыми в WebGLRenderer для использования WebGL. NormalBlending используется по умолчанию. Обратите внимание, что для использования CustomBlending необходимо установить пользовательские константы уравнения смешивание (см. ниже).

#

## Режимы глубины

`v3d.NeverDepth v3d.AlwaysDepth v3d.EqualDepth v3d.LessDepth v3d.LessEqualDepth v3d.GreaterEqualDepth v3d.GreaterDepth v3d.NotEqualDepth`

Функция глубины, которую материал использует для сравнения Z-глубины входящих пикселей с текущим значением Z-буфера глубины. Если результат сравнения true, пиксель будет отрисован.

- NeverDepth никогда не вернет true.
- AlwaysDepth всегда возвращает true.
- EqualDepth вернёт true, если Z-глубина входящего пикселя равна Z-глубине текущего буфера..
- LessDepth вернет true, если Z-глубина входящего пикселя меньше Z-глубины текущего буфера.
- LessEqualDepth используется по умолчанию и возвращает true, если Z-глубина входящего пикселя меньше или равна Z-глубине текущего буфера.
- GreaterEqualDepth вернет true, если Z-глубина входящего пикселя больше или равна Z-глубине текущего буфера.
- GreaterDepth вернет true, если Z-глубина входящего пикселя больше, чем Z-глубина текущего буфера.
- NotEqualDepth вернет true, если Z-глубина входящего пикселя не равна Z-глубине текущего буфера.

#

## Функции шаблонов

`v3d.NeverStencilFunc v3d.LessStencilFunc v3d.EqualStencilFunc v3d.LessEqualStencilFunc v3d.GreaterStencilFunc v3d.NotEqualStencilFunc v3d.GreaterEqualStencilFunc v3d.AlwaysStencilFunc`

Какую функцию шаблона использует материал для определения необходимости выполнения операции шаблона.

- NeverStencilFunc никогда не вернет true.
- LessStencilFunc вернет true, если опорное значение шаблона меньше текущего значения шаблона.
- EqualStencilFunc вернет true, если опорное значение шаблона равно текущему значению шаблона.
- LessEqualStencilFunc вернет true, если опорное значение шаблона меньше или равно текущему значению шаблона.
- GreaterStencilFunc вернет true, если опорное значение шаблона больше, чем текущее значение шаблона.
- NotEqualStencilFunc вернет true, если опорное значение шаблона не равно текущему значению шаблона.
- GreaterEqualStencilFunc вернет true, если опорное значение шаблона больше или равно текущему значению шаблона.
- AlwaysStencilFunc всегда возвращает true.

#

## Операции с шаблонами

`v3d.ZeroStencilOp v3d.KeepStencilOp v3d.ReplaceStencilOp v3d.IncrementStencilOp v3d.DecrementStencilOp v3d.IncrementWrapStencilOp v3d.DecrementWrapStencilOp v3d.InvertStencilOp`

Какую операцию шаблона материал выполнит с пикселем буфера шаблона, если предоставленная функция шаблона пройдет.

- ZeroStencilOp установит значение шаблона равным `0`.
- KeepStencilOp не изменит текущее значение шаблона.
- ReplaceStencilOp заменит значение шаблона на указанное опорное значение шаблона.
- IncrementStencilOp увеличит текущее значение шаблона на `1`.
- DecrementStencilOp уменьшит текущее значение шаблона на `1`.
- IncrementWrapStencilOp увеличит текущее значение шаблона на `1`. Если значение увеличится после `255`, оно будет установлено в `0`.
- DecrementWrapStencilOp увеличит текущее значение шаблона на `1`. Если значение уменьшится ниже `0`, оно будет установлено в `255`.
- InvertStencilOp выполнит побитовое преобразование текущего значения шаблона.

#

## Версия GLSL

`v3d.GLSL1 v3d.GLSL3`

#

## Пользовательские уравнения смешивания

Они работают со всеми типами материалов. Сначала установите режим смешивания материала в `v3d.CustomBlending`, затем задайте нужное уравнение смешивания, фактор источника и фактор назначения.

### Пример

`const material = new v3d.MeshBasicMaterial({color: 0x00ff00}); material.blending = v3d.CustomBlending; material.blendEquation = v3d.AddEquation; // по умолчанию material.blendSrc = v3d.SrcAlphaFactor; // по умолчанию material.blendDst = v3d.OneMinusSrcAlphaFactor; // по умолчанию`

### Уравнения смешивания

`v3d.AddEquation v3d.SubtractEquation v3d.ReverseSubtractEquation v3d.MinEquation v3d.MaxEquation`

### Факторы источника

`v3d.ZeroFactor v3d.OneFactor v3d.SrcColorFactor v3d.OneMinusSrcColorFactor v3d.SrcAlphaFactor v3d.OneMinusSrcAlphaFactor v3d.DstAlphaFactor v3d.OneMinusDstAlphaFactor v3d.DstColorFactor v3d.OneMinusDstColorFactor v3d.SrcAlphaSaturateFactor`

### Факторы назначения

Все коэффициенты источника действительны как коэффициенты назначения, за исключением `v3d.SrcAlphaSaturateFactor`.

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

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