Я заметил что в интернете нет вообще упоминания использования FXAA для сглаживания полупрозрачных объектов, поэтому решил поделиться этим в своей группе в ВК и здесь, потому что кому-то это может быть интересно.
На связи Deathman и это одна из двух последних новых технологий в этом году, которые я использую в N.S.P.X: The Final
В этот раз я покажу то, как я заместил Alpha to coverage.
ATOC это технология, суть которой заключается в использовании MSAA для текстур, использующих альфа тест.
То есть по простому это сглаживание лесенок у частично прозрачных текстур, в нашем случае как пример это листва, трава, сетка рабица и так далее.
Я загорелся идеей добавления подобного в свой проект, но возникла проблема - мой рендер использует API DirectX версии 9.0, а реализовать MSAA адекватными методами можно только начиная с DirectX 10.0 и далее. Вопрос - как это сделать.
С этого момента я решил пойти другим способом - а что если сохранить суть (сглаживать текстуры под альфа тестом), но использовать не MSAA, а что-то другое?
Буквально сегодня, до того как у меня в конец отъехала в мир иной моя видеокарта я реализовал это. Правда на этот раз не получилось сделать все чисто и без кастылей, но кастыль вышел всего один и не такой уж и позорный.
Я подцепил к альфа тестовым текстурам FXAA и оформил это как отдельную опцию, назвав ее как FXAA ATOC, чем мне кажется оно не является.
Результат перед вами.
Лично я оказался немного удивлен результатом - оно работает немного не так как я ожидал и дало результат, похожий на использование Hashed alpha testing, о котором я расскажу в другой раз.