Это довольно распространенный подход к прозрачности в играх, в которых используется отложенное затенение. Надлежащая прозрачность совсем не работает с отложенным затенением, поскольку только данные одной поверхности (глубина, вектор нормали, цвет и т. Д.) Могут храниться в каждом пикселе, а правильная прозрачность включает в себя несколько поверхностей, перекрывающихся в пикселе, каждая из которых требует независимой осветительные приборы.
Есть несколько способов, которыми игровые движки могут справиться с этим:
- Используйте затенение вперед (возможно, с уменьшенной моделью освещения) для прозрачных поверхностей и отложенное затенение для непрозрачных поверхностей. Прозрачные поверхности должны быть нарисованы в отдельном проходе с сортировкой задом наперед.
- Используйте сглаживание, более известное как прозрачность или прозрачность дверцы экрана, которая работает с отложенной штриховкой, поскольку дает только одну поверхность на пиксель. Это особенно хорошо работает для LOD-переходов, так как они обычно заканчиваются за фиксированное время, ограничивая то, как долго видно зернистость. Это не очень хорошо работает, скажем, со стеклянными окнами в здании.
- Также возможно использовать зернистость, но затем применить размытие после обработки, которое объединяет пунктированные пиксели, давая приблизительную прозрачность. Volition делает это в «Saints Row the Third» (и, возможно, в некоторых других их играх) под названием « предполагаемое освещение ». Это может выглядеть довольно хорошо, но размытие после обработки стоит дорого.
- И, конечно же, существуют все методы прозрачности , не зависящие от порядка , хотя я не знаю ни одной игры, в которой они используются. Пока они только для технических демонстраций.
Можно также использовать комбинацию этих подходов, например, прямое затенение для стеклянных окон и зернистость для переходов LOD.
Стоит также отметить, что в некоторых играх для мягких теней используется зернистость. Это компромисс производительности; для более хороших теней требуется больше образцов текстур в пиксельном шейдере, что занимает больше времени, но вы можете получить хорошо выглядящие результаты, используя меньше образцов и смещая их положения случайным образом. Случайное смещение создает эффект зернистости.