Вспышка объектива в 2D сцене XNA 4.0
Я создаю сцену в реальном времени в XNA, это 2D с использованием только спрайтов (отображается на четырехугольниках, стандартная спрайт-бэт с альфа-картой на спрайтах). Я хотел бы создать создание просто бликов объектива, фактически только окклюзию вокруг источника света (мне не нужно направление к центру камеры, чтобы компенсировать несколько спрайтов для бликов объектива и т. Д.) Единственное, что мне в основном нужно, это рассчитать, сколько пикселей из Спрайт источника света (маленькая звезда) визуализируется и в соответствии с ним устанавливает масштаб блика спрайта (так что масштаб 0, если в спрайте нет видимых пикселей от соответствующего спрайта).
Я знаю, как сделать это в 3D, я прочитал это и проверил несколько вещей: http://my.safaribooksonline.com/book/programming/game-programming/9781849691987/1dot-applying-special-effects/id286698039
Я хотел бы спросить, что является лучшим и дешевым способом сделать это в 2D-сцене (считая, сколько пикселей спрайта было визуализировано / закрыто с точностью до пикселя или что-то сопоставимое).
Я также знаю, что трафаретный буфер может помочь, но я не уверен, как применять в этом случае.
1 ответ
Ладно, есть два способа, как решить эту проблему: либо старый подход, использующий трафарет, для расчета количества затененных пикселей и масштабирования спрайтов бликов линз в соответствии с ним.
Другой способ: современный подход, использование бликов на экране, выделение ярких пикселей (я рекомендую использовать конвейер рендеринга HDR и использовать значения яркости выше 1,0 для генерации бликов на объективе, но это зависит от средней и максимальной сцены) и генерировать призраки, например, так:
https://www.youtube.com/watch?v=_A0nKfzbs80&list=UUywPlxpmCZtuqOs6_bZEG9A