Группы состояний эффектов (Direct3D 10)

Состояния эффекта — это пары "имя-значение" в форме выражения.

Состояние Blend

Состояние эффекта Группа
ALPHATOCOVERAGEENABLE, BLENDENABLE, SRCBLEND, DESTBLEND, BLENDOP, SRCBLENDALPHA, DESTBLENDALPHA, BLENDOPALPHA, RENDERTARGETWRITEMASK Члены D3D10_BLEND_DESC

Глубина и состояние трафарета

Состояние эффекта Группа
DEPTHENABLE, DEPTHWRITEMASK, DEPTHFUNC, STENCILENABLE, STENCILREADMASK, STENCILWRITEMASK Члены D3D10_DEPTH_STENCIL_DESC
FRONTFACESTENCILFAIL, FRONTFACESTENCILZFAIL, FRONTFACESTENCILPASS, FRONTFACESTENCILFUNC, BACKFACESTENCILFAIL, BACKFACESTENCILZFAIL, BACKFACESTENCILPASS, BACKFACESTENCILFUNC Член D3D10_DEPTH_STENCILOP_DESC

Состояние растеризатора

Состояние эффекта Группа
FILLMODE D3D10_FILL_MODE
CULLMODE D3D10_CULL_MODE
FRONTCOUNTERCLOCKWISE, DEPTHBIAS, DEPTHBIASCLAMP, SLOPESCALEDEPTHBIAS, ZCLIPENABLE, SCISSORENABLE, MULTISAMPLEENABLE, ANTIALIASEDLINEENABLE Члены D3D10_RASTERIZER_DESC

Состояние дискретизатора

Состояние эффекта Группа
Filter, AddressU, AddressV, AddressW, MipLODBias, MaxAnisotropy, ComparisonFunc, BorderColor, MinLOD, MaxLOD Члены D3D10_SAMPLER_DESC

Примеры см. в разделе Тип выборки (DirectX HLSL).

Состояние объекта effect

Этот объект эффекта Соответствует параметру
RASTERIZERSTATE Объект состояния состояния средства растеризатора .
DEPTHSTENCILSTATE Объект состояния Depth и Stencil State .
BLENDSTATE Объект состояния Blend State .
ВЕРШИНА Скомпилированный объект вершинного шейдера.
PIXELSHADER Скомпилированный объект шейдера пикселей.
GEOMETRYSHADER Скомпилированный объект шейдера геометрии.
DS_STENCILREF AB_BLENDFACTOR AB_SAMPLEMASK Члены D3D10_PASS_DESC.

Определение и использование объектов состояния

Объекты состояния объявляются в FX-файлах в следующем формате. StateObjectType — это одно из перечисленных выше состояний, а MemberName — имя любого члена, которое будет иметь значение, отличное от значения по умолчанию.

StateObjectType ObjectName {
 MemberName = value;
 ...
 MemberName = value;
};

Например, чтобы настроить объект состояния blend с AlphaToCoverageEnable и BlendEnable[0] значением FALSE, будет использоваться следующий код.

BlendState NoBlend {
 AlphaToCoverageEnable = FALSE;
 BlendEnable[0] = FALSE;
};

Объект состояния применяется к проходу техники с помощью одной из функций SetStateGroup, описанных в разделе Синтаксис метода эффектов (Direct3D 10). Например, для применения объекта BlendState, описанного выше, будет использоваться следующий код.

SetBlendState( NoBlend, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );

Руководство, описывающее использование состояний, см. в разделе Управление состоянием.