OpenGL ES 1.1 - реалистичный рендеринг аквариума

У меня есть несколько мешей, которые напоминают аквариум. Я могу перемещать точку обзора или камеру, к которой прикреплен источник света. Только переднее стекло полностью прозрачное, оно должно быть стеклом экрана.

Я пытался использовать функцию блендера glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) с некоторыми комбинациями диффузного материала, но это всегда выглядело как рисунок САПР, несмотря на то, что некоторые реалистичные текстуры могли бы помочь улучшить внешний вид, это просто не выглядело правильно.

Я могу получить желаемый результат, изменив все возможные комбинации glBlendFunc и glMaterialfv, но это может занять некоторое время. Поэтому я разместил вопрос здесь, чтобы узнать, достиг ли кто-нибудь этого визуального эффекта, любая помощь или комментарий также приветствуются.


person rraallvv    schedule 21.12.2012    source источник
comment
Может помочь, если вы опубликуете изображение того, как выглядит ваш рендеринг, и что вам не нравится / чего вы пытаетесь достичь. (просто возиться с режимом наложения может быть недостаточно)   -  person JasonD    schedule 21.12.2012
comment
@JasonD добавил несколько скриншотов, выглядит несколько реалистично, но все еще можно улучшить   -  person rraallvv    schedule 21.12.2012


Ответы (1)


Похоже, в нем отсутствуют какие-либо отражения, которые могут быть как в воде, так и в стекле. Зеркальный термин на поверхности воды может подойти, а в противном случае вы можете аддитивно смешать карту окружающей среды. На самом деле я бы немного уменьшил непрозрачность воды, чтобы сделать границы менее очевидными, и позволил зеркальным отражениям показать четкость.

Само стекло также должно иметь какое-то отражение окружающей среды, если вы визуализируете его не в черной комнате. Опять же, простой и тонкой карты окружения, вероятно, будет достаточно.

Другие вещи, которые вы, возможно, захотите попробовать (учитывая, что у вас нет шейдеров на ES1.1):

Каустика. Это яркие волнистые линии, которые вы видите на дне бассейна, вызванные рассеянием света в разных направлениях при движении поверхности. Вы можете подделать их с альфа-текстурой и раскачиванием вершин.

Преломление. Вы можете визуализировать подводную сцену во вторичный буфер, а затем использовать его в качестве текстуры, что позволит вам несколько искажать/анимировать изображение. В аквариуме этого не слишком много, и вы действительно должны увидеть, как он качается, только если смотреть через верхнюю поверхность, но, возможно, это было бы интересно.

person JasonD    schedule 21.12.2012