воскресенье, 16 октября 2011 г.

Вода с преломлением как постэффект.

Рендеринг прозрачной водной поверхности с преломлением...

Для этого потребуется, собственно, сцена с геометрией и водная поверхность, представленная плоскостью. Так же потребуется dudv текстура. Нод с геометрией сцены (без водной поверхности) является целью для первого FBORenderer`а; для второго FBORenderer`а целью является нод содержащий водные поверхности. Оба рендерера рендерят в color и depth буфер. При отрисовке поверхности воды, к ней применяется шейдер, который рассчитывает смещение текстурных координат dudv текстуры, и, собственно, эту текстуру накладывает. Таким образом, для получения итогового изображения необходимо в шейдере для каждого фрагмента сравнить глубину водного и сценовского фрагментов и, в случае если вода перекрывает остальную сцену в этой точке, выбирать цвет этого пикселя с учетом отклонения текстурных координах в соответствии с dudv текстурой. Так же не лишним будет немного подкрасить этот фрагмент в соответствии с цветом воды.
Демоcg_libs_2.0.0.12

5 комментариев: