Skip to content

AlphaTestEffect

Chuck Walbourn edited this page Jul 12, 2016 · 17 revisions

This is a native Direct3D 12 implementation of the built-in AlphaTestEffect from XNA Game Studio 4 which supports per-pixel alpha testing, vertex color, and fogging.

See also Effects

Header

#include <Effects.h>

Initialization

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);

Interfaces

AlphaTestEffect supports IEffect, IEffectMatrices, and IEffectFog. EffectFlags::Fog is required to enable fogging.

Input layout

This effect requires SV_Position and TEXCOORD0. It requires COLOR if per-vertex colors are enabled (EffectFlags::VertexColor).

Properties

  • SetTexture: Associates a texture shader resource view with the effect.

  • SetReferenceAlpha: Sets the alpha reference value for the test.

Remarks

Does not support lighting (EffectFlags::Lighting or EffectsFlags::PerPixelLighting).

The EffectFlags::Texture flag is always enabled for this effect, so use or absence of this flag is ignored for this effect.

For Use

  • Universal Windows Platform apps
  • Windows desktop apps
  • Windows 11
  • Windows 10
  • Xbox One
  • Xbox Series X|S

Architecture

  • x86
  • x64
  • ARM64

For Development

  • Visual Studio 2022
  • Visual Studio 2019 (16.11)
  • clang/LLVM v12 - v20
  • MinGW 12.2, 13.2
  • CMake 3.21

Related Projects

DirectX Tool Kit for DirectX 11

DirectXMesh

DirectXTex

DirectXMath

Tools

Test Suite

Model Viewer

Content Exporter

DxCapsViewer

See also

DirectX Landing Page

Clone this wiki locally