0

Я пытаюсь сделать шейдер для Старлинг, которая будет инвертировать альфа (вид маски) от Скворец спрайта:Старлинг фильтр: инвертировать альфа

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" 

Этот код работает с к0 = 1, но я не понимаете, почему, потому что, когда я играю с fc0 и помещаю в него .5, нет никакой разницы. Где я ошибаюсь? Как правильно сделать 1 - пиксельную альфу?

+0

получают ли ваш шейдер любой вход в 'v0'? В руководстве указано, что v0 должно быть заполнено UV первым. – Vesper

+0

Я думаю, FragmentShader от скрипичного автоматического набора: константы вершин 0-3: mvpMatrix (3D), атрибут вершины 0: позиция вершины (FLOAT_2), атрибут вершины 1: координаты текстуры (FLOAT_2) и Текстура 0: входная текстура –

ответ

0

Правильный код был: "sub ft1.w, fc0.x, ft1.w" + "\n" +

я должен использовать fc0.x, потому что количество альфа был пропуск фрагмента шейдер через первый вход (к0 имеют 4 компоненты, X Y Z и W).

Вы найдете окончательный фильтр здесь: https://gist.github.com/simsoft/5169715

Alpha inverter filter

 Смежные вопросы

  • Нет связанных вопросов^_^