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


Смешивание альфа-текстур (Direct3D 9)

Подсистема освещения объединяет цвет материала, цвет вершин и информацию об освещении для генерации цвета для каждой вершины. После интерполяции он создает цвет на пиксель, записанный в буфер кадра. Если приложение включает смешение текстур, цвет пикселя станет сочетанием текущего пикселя в буфере кадра и цвета текстуры.

Эта формула определяет окончательный цвет смешаемого пикселя:

Color = TexelColor x SourceBlend + CurrentPixelColor x DestBlend

Где:

  • Цвет — это цвет выходных пикселей.
  • TexelColor — это входной цвет после фильтрации текстур.
  • SourceBlend — это процент окончательного цвета пикселя, состоящий из исходного цвета текселя.
  • CurrentPixelColor — это цвет текущего пикселя.
  • DestBlend — это процент окончательного цвета пикселей, состоящий из текущего цвета пикселя.

Окончательное уравнение смешивания задается путем вызова IDirect3DDevice9::SetRenderState и указания состояния отрисовки смеси (D3DRS_BLENDXXX) с соответствующим коэффициентом смешивания (D3DBLEND). Значения SourceBlend и DestBlend варьируются от 0,0 (прозрачно) до 1.0 (непрозрачные) включительно. Кроме того, приложение может управлять прозрачностью пикселя, задав альфа-значение в текстуре. В этом случае используйте следующее:

SourceBlend = D3DBLEND_ZERO 
DestBlend = D3DBLEND_ONE

Уравнение смешения приведет к тому, что отрисованный пиксель будет прозрачным. Значения по умолчанию:

SourceBlend = D3DBLEND_SRCALPHA 
DestBlend = D3DBLEND_INVSRCALPHA

смешивание текстур

фильтрация текстур (Direct3D 9)

D3DRENDERSTATETYPE