Я хочу использовать Alpha Blending (SRC_ALPHA, ONE_MINUS_SRC_ALPHA)
, которая в принципе это:Cg шейдеры Alpha Blending
frag_out.aaaa * frag.out + ((1.0, 1.0, 1.0, 1.0) - frag_out.aaaa) * pixel_color
Допустим цвет пикселя уже на экране (1.0, 1.0, 1.0, 1.0)
Цвет я в настоящее время рендера (1.0, 1.0, 1.0, 0.4)
Когда я делаю это, полученный цвет на экране имеет альфа 0.76 (даже если он был полностью непрозрачен ПЕРЕД)
Действительно:
(0.4, 0.4, 0.4, 0.4) * (1.0, 1.0, 1.0, 0.4) + (0.6, 0.6, 0.6, 0.6) * (1.0, 1.0, 1.0, 1.0) = (1.0, 1.0, 1.0, 0.76)
Так что в основном цвет на экране был непрозрачным (белый), и после того, как я положил прозрачный спрайт сверху, экран станет прозрачным (0.76 альфа), и я смогу просмотреть фон. Было бы идеально, если бы я мог смешать его следующим образом:
(0.4, 0.4, 0.4, 1.0) * (1.0, 1.0, 1.0, 0.4) + (0.6, 0.6, 0.6, 0.6) * (1.0, 1.0, 1.0, 1.0) = (1.0, 1.0, 1.0, 1.0)
Можно ли достичь этого? Если да, то как?
Спасибо! Вы знаете, как указать этот тип смешивания на языке CG Shading? – Terko
Извините, никогда не использовал CG. – BDL