Blending (Змішування)

Blending - один із етапів графічного конвеєра, який працює після виконання фрагментного (піксельного) шейдера та post Depth/Stencil тестів. Blending дозволяє змішувати отриманий в результаті розрахунків фрагментного шейдера колір і той колір, який знаходиться в буфері кадру. Змішування проводиться за формулою:

За наявності D3DPBLENDCAPS_BLENDFACTOR у DX або GL_EXT_blend_color у GL (в ядрі з версії 1.2) з'являються додаткові значення:

ПараметрНазва в Direct3D10Назва в Direct3D9Назва в OpenGLДоповнення
(Rc,Gc,Bc,Ac)D3D10_BLEND_BLEND_FACTORD3DBLEND_BLENDFACTORGL_CONSTANT_COLORПокомпонентне множення на константний колір
(1-Rc,1-Gc,1-Bc,1-Ac)D3D10_BLEND_INV_BLEND_FACTORD3DBLEND_INVBLENDFACTORGL_ONE_MINUS_CONSTANT_COLORКомпонентне множення на інв. константний колір
(Ac,Ac,Ac,Ac)D3D10_BLEND_BLEND_FACTOR-GL_CONSTANT_ALPHAКомпонентне множення на константну альфу
(1-Ac,1-Ac,1-Ac,1-Ac)D3D10_BLEND_INV_BLEND_FACTOR-GL_ONE_MINUS_CONSTANT_ALPHAПокомпонентне множення інв. константну альфу
Індекс s - source, d - destination, c - constant. За замовчуванням srcBlend = (1, 1, 1, 1), а dstBlend = (0, 0, 0, 0)

Для встановлення названих вище операцій та параметрів використовуються такі функції: Для включення блендингу

Але це ще всі можливості стадії змішування. Існують додаткові розширення, які дозволяють розділити операції над rgb кольором і альфою. Ця можливість називається separate alpha blend.При його включенні блендинг проводиться за формулами:

У GL роздільний блендинг встановлюється командою

Але це ще не все! Можна також встановити окремі blendOp's для rgb та альфи.

У GL це проводитиметься командою

Що таке Blending (Змішування)?