Объект GLSL светится

Можно ли создать шейдер GLSL, чтобы любой объект был окружен сияющим эффектом? Скажем, у меня есть 3d куб, и если он выбрал куб, он должен быть окружен синим свечением. Любые подсказки?

Ответ 1

Ну, есть несколько способов сделать это. Если каждый объект также представлен в формате wingated edge, то тривиально рассчитать силуэт, а затем выдавить его, чтобы создать свечение. Это, однако, очень важный метод CPU.

Для метода GPU вы можете попробовать выполнить рендеринг в буфер вне экрана, при этом шаблон трафарета будет увеличиваться. Если вы затем выполняете размытие изображения (хотя только для записи в пиксели, где трафарет не равен нулю), вы получите размытие вокруг края изображения, которое затем может быть вложено в основную сцену с альфа-смешиванием. Это скорее размытие, чем свечение, но было бы относительно легко перерисовать яркость, чтобы она отражала свет.

Существует множество других методов... вот несколько ссылок для просмотра:

http://http.developer.nvidia.com/GPUGems/gpugems_ch21.html
http://www.codeproject.com/KB/directx/stencilbufferglowspart1.aspx?display=Mobile

У вас есть охота на google, потому что есть много информации:)