2017-02-07 27 views
0

Я обрабатываю частицы с помощью шейдеров Vertex и Fragment.Частицы спрайтов слегка накапливаются, где альфа 0%

В моем вершинном шейдере я зажимать альфа-компонент цвета выходного фрагмента:

highp float alpha = clamp(rotatedTexture.a, 0.01, 0.05); 
highp vec4 base = vec4(vShade.r, vShade.g, vShade.b, alpha); 
fragmentColor = base; 

Значение rotatedTexture.a считывается в одну из следующего PNG - Я сделал абсолютно уверен, что есть нет края в растровом изображении - ничего, что напоминает квадрат, не должно быть нарисовано.

enter image description here

Но вы можете увидеть квадраты, оказываемые - даже несмотря на то, эффект незначителен - они, безусловно, есть. Я выделил один спрайт с черной рамкой (два хороших примера - большой зеленый и розовый спрайт, перекрывающиеся друг с другом в нижнем правом углу).

Поскольку я зажимаю альфа до 5% процентов, и поскольку на моей текстурной текстуре явно нет жестких краев, как это может быть рисование жестких краев? Обратите внимание, что я вижу одно и то же с разными текстурами.

enter image description here

+0

Сама геометрия имеет жесткий край. Если у вас нет альфы, которая на самом деле равна нулю (что вы не из-за минимума> 0.0 на зажиме), то вы получите некоторое количество квада, видимого. Почему ваше значение минимального зажима больше нуля? – solidpixel

ответ

2

enter image description here

Независимо от текстуры альфа ваша функция возвращает зажим от 0,1 до 0,5, так как вы установите так.

Если текстура альфа равен нулю, ваша функция возвращает зажим 0,1 или

, если ваша текстура альфа составляет более 0,5, он возвращает 0,5

+0

Это не отвечает на вопрос, откуда идет темная граница. – solidpixel

+0

@solidpixel Разве это не то, что он выделил лично? он сказал: «Я выделил один спрайт с черной рамкой» – Sung

+0

@solidpixel и прочитал заголовок «Частицы счастица слегка накапливают пиксели, где альфа 0%» – Sung