Скворец фильтр: инвертировать альфа
Я пытаюсь создать шейдер для Starling, который будет инвертировать альфа (своего рода маску) спрайта Starling:
var fragmentProgramCode:String =
// Get texture
"tex ft1, v0, fs0 <2d,linear,nomip>" + "\n" +
// make 1 - pixel alpha
"sub ft1.w, fc0, ft1.w" + "\n" +
// Send result
"mov oc, ft1"
Этот код работает с fc0 = 1, но я не совсем понимаю, почему, потому что когда я играю с fc0 и вставляю в него.5, нет никакой разницы. Где я не прав? Как правильно сделать 1 - пиксельный альфа?
1 ответ
Решение
Правильный код был: "sub ft1.w, fc0.x, ft1.w" + "\n" +
Я должен использовать fc0.x, потому что величина альфа была передана фрагментному шейдеру через первую запись (fc0 имеет 4 компонента, x y z и w).
Вы найдете окончательный фильтр здесь: https://gist.github.com/simsoft/5169715