Блики в 2D-сцене XNA 4.0

Я создаю сцену в реальном времени в XNA, это 2D, используя только спрайты (рендеринг на квадрациклах, стандартный пакет спрайтов с альфа-картой на спрайтах). Я хотел бы создать просто блик объектива, на самом деле только окклюзию вокруг источника света (мне не нужно направление к центру камеры, чтобы сместить несколько спрайтов для блик объектива и т. д.). Единственное, что мне в основном нужно, это вычислить, сколько пикселей из рендерится спрайт источника света (маленькая звездочка) и в соответствии с ним задается масштаб спрайта бликов линзы (то есть масштаб 0, если спрайта нет видимых пикселей от соответствующего спрайта).

Я знаю, как это сделать в 3D, я прочитал это и проверил несколько вещей: http://my.safaribooksonline.com/book/programming/game-programming/9781849691987/1dot-applying-special-effects/id286698039

Я хотел бы спросить, какой лучший и самый дешевый способ сделать это в 2D-сцене (подсчитывая, сколько пикселей спрайта было отрендерено/окклюдировано с точностью до пикселя или чем-то сопоставимым).

Я знаю, что также может помочь буфер трафарета, но я не уверен, как его применить в этом случае.


person user3821985    schedule 18.07.2014    source источник


Ответы (1)


Хорошо, есть два способа решить эту проблему: либо подход старой школы, используя трафарет для подсчета количества перекрытых пикселей и масштабирования спрайтов бликов в соответствии с ним.

Другой способ: современный подход, использование бликов в экранном пространстве, выделение ярких пикселей (я рекомендую конвейер HDR-рендеринга и использование значений яркости выше 1,0 для создания бликов, но это зависит от среднего и максимального значения сцены) и создания призраков, например так:

https://www.youtube.com/watch?v=_A0nKfzbs80&list=UUywPlxpmCZtuqOs6_bZEG9A

person user3821985    schedule 27.03.2015