Указанное шейдером эталонное значение трафарета (графика Direct3D 11)
Включение пиксельных шейдеров для вывода эталонного значения трафарета вместо использования указанного api-интерфейса обеспечивает очень точный контроль над операциями набора элементов.
Указанное значение шейдера заменяет для этого вызова указанное в API значение ссылки на набор элементов. Это означает, что изменение влияет как на тест трафарета, так и на D3D11_STENCIL_OP_REPLACE трафарета (один элемент D3D11_STENCIL_OP) для записи ссылочного значения в буфер трафарета.
В более ранних версиях D3D11 значение ссылки на набор элементов можно указать только с помощью метода ID3D11DeviceContext::OMSetDepthStencilState . Это означает, что это значение можно определить только при степени детализации для каждого рисования. Эта функция D3D11.3 позволяет разработчикам считывать и использовать эталонное значение трафарета (SV_StencilRef
), которое выводится из пиксельного шейдера. Это означает, что его можно указать на уровне детализации для каждого пикселя или выборки.
Эта функция является необязательной в D3D11.3. Чтобы проверить поддержку, проверка PSSpecifiedStencilRefSupported
логическое поле D3D11_FEATURE_DATA_D3D11_OPTIONS2 с помощью ID3D11Device::CheckFeatureSupport.
Ниже приведен пример использования SV_StencilRef
в пиксельном шейдере:
uint main2(float4 c : COORD) : SV_StencilRef
{
return uint(c.x);
}
Связанные темы