Почему пикселит волосы?

Почему волосы пикселятся? В любой игре у персонажей в волосы становятся такими как на скрине. Может на скрине не так бросается в глаза, но в игре это очень даже заметно. Разрешение в Киберпанке 1920x1080, все настройки на макс, отключены зернистость и хроматическая абберация. В некоторых других играх данную проблему я могу решить выставлением разре…

Почему пикселит волосы?
2323

Это такой оптимизированный способ отрисовки полу-прозрачности. 

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

По быстрому полупрозрачность можно организовать без применения блендинга, по типу шахматного рендеринга. В таком подходе пиксели текстуры, которая должна быть полу-прозрачной,  рисуются просто реже, в виде паттерна - чем больше полупрозрачность, тем больше пикселей не рисуется. Если смотреть отдаленно - в целом создается иллюзия полупрозрачности, хотя ни одного полупрозрачного пиксела там нет - либо фон, либо текстура волос.

Такой же эффект можно наблюдать во многих других играх, если близко подводить камеру к объекту, и он как бы "растворяется" с использованием похожей техники (например, крыши зданий в XCOM, или листва/растительность в большинстве игр)

Ну а т.к. отсечение происходит в пиксельном шейдере, то никаким простым алгоритмом сглаживания полечить это невозможно.

В любой игре бюджет на рендер полупрозрачной геометрии очень тщательно оптимизируется, т.к. нужна она много где, а жрет ой мама как (к слову, в КП2077 очень много полупрозрачной геометрии в кадрах, поэтому выбора у них особо не было).

56
Ответить

Спасибо. Тебе. Большое. 

Я заебался думать, что это такое и как поправить. Теперь хоть понятно будет.

1
Ответить