Поделиться через


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

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

Состояние смешения

Состояние эффекта Группа
ALPHATOCOVERAGEENABLEBLENDENABLESRCBLENDDESTBLENDBLENDBLENDOP SRCBLENDALPHADESTBLENDALPHABLENDOPALPHARENDERTARGETWRITEMASK Члены D3D11_BLEND_DESC

 

Глубина и состояние набора элементов

Состояние эффекта Группа
DEPTHENABLEDEPTHWRITEMASKDEPTHFUNCSTENCILENABLESTENCILREADMASKSTENCILWRITEMASK Члены D3D11_DEPTH_STENCIL_DESC
FRONTFACESTENCILFAILFRONTFACESTENCILZFAILFRONTFACESTENCILPASSFRONTFACESTENCILFUNCBACKFACESTENCILFAILBACKFACESTENCILZFAILBACKFACESTENCILPASSBACKFACESTENCILFUNC Член D3D11_DEPTH_STENCILOP_DESC

 

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

Состояние эффекта Группа
FILLMODE D3D11_FILL_MODE
CULLMODE D3D11_CULL_MODE
FRONTCOUNTERCLOCKWISEDEPTHBIASDEPTHBIASCLAMPSLOPESCALEDDEPTHBIAS ZCLIPENABLESCISSSORENABLEMULTISAMPLEENABLEANTIALIASEDLINEENABLE Члены D3D11_RASTERIZER_DESC

 

Состояние выборки

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

 

Примеры см. в разделе Sampler Type (DirectX HLSL).

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

Объект этого эффекта Соответствует параметру
RASTERIZERSTATE Объект состояния состояния растеризатора .
DEPTHSTENCILSTATE Объект состояния Depth и Stencil State .
BLENDSTATE Объект состояния Blend State .
VERTEXSHADER Скомпилированный объект шейдера вершин.
PIXELSHADER Скомпилированный объект шейдера пикселей.
GEOMETRYSHADER Скомпилированный объект шейдера геометрии.
DS_STENCILREFAB_BLENDFACTORAB_SAMPLEMASK Члены D3DX11_PASS_DESC.

 

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

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

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

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

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

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

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

Синтаксис метода эффектов

Формат эффектов (Direct3D 11)