"if (diffuse.a < 0.5f) discard; // реализация маски"
|
всё верно, должно работать
diffuse.a выдаёт альфаканал.
затем сравниваешь его с 0.5 (в шейдерах цвет считается от 0 до 1, вместо 0-255, т.е. по сути это серый 128), если альфа прозрачнее средней в этом пикселе, то выкидываем этот пиксель.
точка выдаёт элемент типа.
у тебя тип - float4.
в нём 4 элемента-флоата: x,y,z,w, их же альтернативно можно получать через r,g,b,a, нет разницы.