Я хочу, чтобы discard
в моем шейдере фрагментов предотвращало запись этого фрагмента в буфер трафарета; У меня была идея визуального эффекта в моей игре, и ее можно было бы реализовать, если бы я мог полагаться на это поведение для discard
.
Мой фрагментный шейдер не делает ничего особенного; он просто сэмплирует текстуру, и если альфа близка к 0, то discard
иначе пишет.
void main()
{
vec4 texColor = texture(tex, texCoord);
if(texColor.a < 0.5f)
{
discard;
}
FragColor = texColor;
}
Однако, похоже, что я не могу полагаться на discard
предотвращение записи трафаретного буфера в :
Если тестирование трафарета активно, отброшенные фрагменты все еще могут влиять на буфер трафарета. Тест шаблона может изменить буфер шаблона даже в случае сбоя теста шаблона или глубины. И поскольку тест трафарета выполняется до теста глубины, сбои теста глубины не могут помешать тесту шаблона обновить буфер трафарета.
Мне нужно, чтобы тест трафарета был активен во время рендеринга. Могу ли я не полагаться на discard
, предотвращающий запись в буфер трафарета?