Команда шаблона в ссылке ShaderLab
Настраивает параметры, относящиеся к буферу шаблона на GPU.
Совместимость конвейера отображения
| Название особенности | Universal Render Pipeline (URP) | High Definition Render Pipeline (HDRP) | Изготовленный на заказ SRP | Built-in Render Pipeline |
|---|---|---|---|---|
| Трафарет | Да | Да | Да | Да |
Синтаксис
| Подпись | Синтаксис примера | Функция |
|---|---|---|
Stencil{Ref <ref>ReadMask <readMask>WriteMask <writeMask>Comp <comparisonOperation>Pass <passOperation>Fail <failOperation>ZFail <zFailOperation>CompBack <comparisonOperationBack>PassBack <passOperationBack>FailBack <failOperationBack>ZFailBack <zFailOperationBack>CompFront <comparisonOperationFront>PassFront <passOperationFront>FailFront <failOperationFront>ZFailFront <zFailOperationFront>}Обратите внимание, что все параметры необязательны. |
Stencil{Ref 2Comp equalPass keepZFail decrWrap} |
Настраивает буфер шаблона в соответствии с заданными параметрами. |
Параметры
| Параметр | Значение | Функция |
|---|---|---|
| реф | Целое число. Диапазон от 0 до 255. По умолчанию 0. | Значение ссылки. GPU сравнивает текущее содержимое буфера шаблона с этим значением, используя операцию, определенную в comparisonOperation. Это значение маскируется readMask или writeMask, в зависимости от того, происходит операция чтения или записи. GPU также может записать это значение в буфер шаблона, если Pass, Fail или ZFail имеют значение Replace. |
| readMask | Целое число. Диапазон от 0 до 255. По умолчанию 255. | GPU использует это значение в качестве маски при выполнении теста шаблона. См. выше уравнение теста шаблона. |
| writeMask | Целое число. Диапазон от 0 до 255. По умолчанию 255. | GPU использует это значение в качестве маски при записи в буфер шаблона. Обратите внимание, что, как и другие маски, она указывает, какие биты включены в операцию. Например, значение 0 означает, что в операцию записи не включены биты, а не то, что буфер шаблона получает значение 0. |
| comparisonOperation | Операция сравнения. Допустимые значения см. в Значения операции сравнения. По умолчанию — Всегда. | Операция, которую GPU выполняет для теста шаблона для всех пикселей. Это определяет операцию для всех пикселей, независимо от направления. Если это определено в дополнение к comparisonOperationBack и comparisonOperationFront, это значение переопределяет их. |
| passOperation | Операция шаблона. Допустимые значения см. в Значения операции шаблона. По умолчанию — Keep. | Операция, которую GPU выполняет на буфере шаблона, когда пиксель проходит как тест шаблона, так и тест глубины. Это определяет операцию для всех пикселей, независимо от их направления. Если это определено в дополнение к passOperationBack и passOperationFront, это значение переопределяет их. |
| failOperation | Операция шаблона. Допустимые значения см. в Значения операции шаблона. По умолчанию — Keep. | Операция, которую GPU выполняет на буфере шаблона, когда пиксель не проходит тест шаблона. Определяет операцию для всех пикселей, независимо от их направления. Если это определено в дополнение к failOperationBack и failOperationFront, это значение переопределяет их. |
| zFailOperation | Операция шаблона. Допустимые значения см. в Значения операции шаблона. По умолчанию — Keep. | Операция, которую GPU выполняет на буфере шаблона, когда пиксель проходит тест шаблона, но не проходит тест глубины. Это определяет операцию для всех пикселей, независимо от их направления. Если это определено в дополнение к zFailOperationBack и zFailOperationFront, это значение переопределяет их. |
| comparisonOperationBack | Операция сравнения. Допустимые значения см. в Значения операции сравнения. По умолчанию — Всегда. | Операция, которую выполняет GPU для тестирования шаблона. Это определяет операцию только для пикселей, обращенных назад. Если определено comparisonOperation, это значение переопределяет это значение. |
| passOperationBack | Операция шаблона. Допустимые значения см. в Значения операции шаблона. По умолчанию — Keep. | Операция, которую GPU выполняет на буфере шаблона, когда пиксель проходит как тест шаблона, так и тест глубины. Это определяет операцию только для пикселей, обращенных назад. Если определено passOperation, это значение переопределяет это значение. |
| failOperationBack | Операция шаблона. Допустимые значения см. в Значения операции шаблона. По умолчанию — Keep. | Операция, которую GPU выполняет на буфере шаблона, когда пиксель не проходит тест шаблона. Определяет операцию только для пикселей, обращенных назад. Если определено failOperation, это значение переопределяет это значение. |
| zFailOperationBack | Операция шаблона. Допустимые значения см. в Значения операции шаблона. По умолчанию — Keep. | Операция, которую GPU выполняет на буфере шаблона, когда пиксель проходит тест шаблона, но не проходит тест глубины. Это определяет операцию только для пикселей, обращенных назад. Если определено zFailOperation, это значение переопределяет это значение. |
| comparisonOperationFront | Операция сравнения. Допустимые значения см. в Значения операции сравнения. По умолчанию — Всегда. | Операция, которую выполняет GPU для тестирования шаблона. Это определяет операцию только для передних пикселей. Если определено comparisonOperation, это значение переопределяет это значение. |
| passOperationFront | Операция шаблона. Допустимые значения см. в Значения операции шаблона. По умолчанию — Keep. | Операция, которую GPU выполняет на буфере шаблона, когда пиксель проходит как тест шаблона, так и тест глубины. Это определяет операцию только для передних пикселей. Если определено passOperation, это значение переопределяет это значение. |
| failOperationFront | Операция шаблона. Допустимые значения см. в Значения операции шаблона. По умолчанию — Keep. | Операция, которую GPU выполняет на буфере шаблона, когда пиксель не проходит тест шаблона. Это определяет операцию только для передних пикселей. Если определено failOperation, это значение переопределяет это значение. |
| zFailOperationFront | Операция шаблона. Допустимые значения см. в Значения операции шаблона. По умолчанию — Keep. | Операция, которую GPU выполняет на буфере шаблона, когда пиксель проходит тест шаблона, но не проходит тест глубины. Это определяет операцию только для передних пикселей. Если определено zFailOperation, это значение переопределяет это значение. |
Сравнительные показатели
В C# эти значения представлены Rendering.CompareFunction enum.
| Значение | Соответствующее целое значение в Rendering.CompareFunction enum | Функция |
|---|---|---|
Never |
1 | Никогда не отображать пиксели. |
Less |
2 | Отображать пиксели, когда их значение меньше текущего значения в буфере шаблона. |
Equal |
3 | Отображать пиксели, когда их справочное значение равно текущему значению в буфере шаблона. |
LEqual |
4 | Отображать пиксели, когда их справочное значение меньше или равно текущему значению в буфере шаблона. |
Greater |
5 | Отображать пиксели, когда их справочное значение больше текущего значения в буфере шаблона. |
NotEqual |
6 | Отображать пиксели, когда их справочное значение отличается от текущего значения в буфере шаблона. |
GEqual |
7 | Отображать пиксели, когда их справочное значение больше или равно текущему значению в буфере шаблона. |
Always |
8 | Всегда отображать пиксели. |
Значения шаблона
В C# эти значения представлены Rendering.Rendering.StencilOp enum.
| Значение | Соответствующее целое значение в Rendering.StencilOp enum | Функция |
|---|---|---|
Keep |
0 | Сохранить текущее содержимое буфера шаблона. |
Zero |
1 | Записать 0 в буфер шаблона. |
Replace |
2 | Запись значения ссылки в буфер. |
IncrSat |
3 | Увеличивает текущее значение в буфере. Если значение уже равно 255, оно остается на уровне 255. |
DecrSat |
4 | Уменьшает текущее значение в буфере. Если значение уже равно 0, то оно остается на уровне 0. |
Invert |
5 | Отрицает все биты текущего значения в буфере. |
IncrWrap |
6 | Увеличивает текущее значение в буфере. Если значение уже равно 255, оно становится 0. |
DecrWrap |
7 | Уменьшает текущее значение в буфере. Если значение уже равно 0, оно становится 255. |