Рендеринг тумана под водой

8

Мне известно о glFog, который смешивается между цветом тумана и цветом поверхности в зависимости от расстояния до камеры, например:

введите описание изображения здесь

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

введите описание изображения здесь

В данный момент я просто визуализирую поверхность воды с помощью альфа-смешения, как показано ниже. Мне нужно, чтобы туман основывался на расстоянии от поверхности воды до дна. Как я могу получить это расстояние? На данный момент я предполагаю, что камера всегда будет над водой.

введите описание изображения здесь

jozxyqk
источник

Ответы:

5

Вы можете проследить расстояние до второй поверхности. Это может быть концептуально самым простым, но не обязательно самым быстрым методом *.

Но есть хитрый трюк, вы можете многократно рендерить карту глубины на поверхность воды с камеры. Расстояние в воде теперь равно глубине пикселя минус глубина карты глубины. Это работает не во всех ситуациях, таких как выход из воды и повторный вход позже. Но должно работать во многих случаях, как показано на рисунке. Вы даже можете использовать ту же технику для логических операций.

DMAP

Изображение 1 : визуализируйте карту глубины, обращайтесь к карте глубины, когда затеняете дно вашего пруда.

* Это может быть в определенных случаях.

joojaa
источник