-
Notifications
You must be signed in to change notification settings - Fork 409
AlphaTestEffect
This is a native Direct3D 12 implementation of the built-in AlphaTestEffect from XNA Game Studio 4 (Microsoft.Xna.Framework.Graphics.AlphaTestEffect
) which supports per-pixel alpha testing, vertex color, and fogging.
See also Effects
#include <Effects.h>
Construction requires a Direct3D 12 device, optional effect flags, and state description:
std::unique_ptr<AlphaTestEffect> effect;
RenderTargetState rtState(m_deviceResources->GetBackBufferFormat(),
m_deviceResources->GetDepthBufferFormat());
EffectPipelineStateDescription pd(
&InputLayout,
CommonStates::Opaque,
CommonStates::DepthDefault,
CommonStates::CullCounterClockwise,
rtState);
effect = std::make_unique<AlphaTestEffect>(device, EffectFlags::None, pd);
For exception safety, it is recommended you make use of the C++ RAII pattern and use a std::unique_ptr
or std::shared_ptr
The constructor takes one additional optional parameter that controls the test function (see D3D12_COMPARISON_FUNC)
AlphaTestEffect(ID3D12Device* device, int effectFlags,
const EffectPipelineStateDescription& pipelineDescription,
D3D12_COMPARISON_FUNC alphaFunction = D3D12_COMPARISON_FUNC_GREATER);
AlphaTestEffect supports IEffect, IEffectMatrices, and IEffectFog. EffectFlags::Fog
is required to enable fogging.
This effect requires SV_Position
and TEXCOORD0
. It requires COLOR
if per-vertex colors are enabled (EffectFlags::VertexColor
).
-
SetTexture: Associates a texture and sampler descriptor with the effect.
-
SetReferenceAlpha: Sets the alpha reference value for the test.
Does not support lighting (EffectFlags::Lighting
or EffectsFlags::PerPixelLighting
). The EffectFlags::BiasedVertexNormals
flag is ignored by this effect.
The EffectFlags::Texture
flag is always enabled for this effect, so use or absence of this flag is ignored for this effect.
This effect is primarily used to implement techniques that relied on legacy Direct3D 9 alpha testing render state. This effect is independent of the depth/stencil tests set in D3D12_DEPTH_STENCIL_DESC.DepthFunc
and StencilFunc
.
All content and source code for this package are subject to the terms of the MIT License.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.
- Universal Windows Platform apps
- Windows desktop apps
- Windows 11
- Windows 10
- Xbox One
- Xbox Series X|S
- x86
- x64
- ARM64
- Visual Studio 2022
- Visual Studio 2019 (16.11)
- clang/LLVM v12 - v18
- MinGW 12.2, 13.2
- CMake 3.20