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